我正在尝试允许用户使用PHP表单添加新记录并更新MySQL数据库中的现有字段。
我已经构建了表单并且用户可以添加新记录,但是当我修改$ add函数以使用UPDATE而不是INSERT INTO时,它使用已经输入到表单中的值来更新所有记录而不是只是已经编辑的那个。
完整代码在这里: http://pastebin.com/s0TBUYgK
我试图在第20行替换INSERT INTO查询的UPDATE查询是:
$add = "UPDATE albums SET name = '$name', artist = '$artist', year = '$year'";
答案 0 :(得分:0)
您没有where
子句将更新限制为仅编辑的一条记录,例如......
UPDATE albums SET .... WHERE id=$id;
^^^^^^^^^^^^
请记住,sql倾向于“你指定的越少,得到的越多”。
考虑到这种基本错误,我猜你已经完成 NO 清理并转发$name
,$artist
中的数据,以及$year
,表示您的代码容易受到SQL injection attacks的攻击。</ p>
答案 1 :(得分:0)
您应指定id
。
$add = "UPDATE albums SET name = '$name', artist = '$artist', year = '$year' WHERE `id`='$id'";
在表单上添加:
<input type="text" name="id" value="<?php echo $id; ?>" />
然后处理帖子
$id = $_POST['id'];