当我在Update的WHERE子句中使用变量时,不会发生更新。
$eventid=$_GET['id'];
$sql = "UPDATE events SET name=:name WHERE id=:id";
$q = $conn->prepare($sql);
$q->execute(array(':name'=>$name,':id'=>$eventid));
当我回显$ _GET ['id']时,我得到了正确的值。 $ _GET ['id']是我从另一个页面传递的值
答案 0 :(得分:1)
人们说你很容易受到sql注入攻击,因为你通过$ _GET参数将id传递给你直接使用$ _POST超全局的更新语句。
为了使其更安全,您可以首先通过$ _POST传递ID,而不是直接在SQL中使用$ _POST。
但那不是你问的问题。
我会冒险猜测它没有更新,因为你将ID作为一个字符串传递,它可能不是。
尝试更改
WHERE id='".$_GET['id']."'");\
到
WHERE id=".$_GET['id']."");
答案 1 :(得分:1)
将查询保存到字符串变量中,以便调试发送给db MySQL的内容。然后尝试直接在db上运行结果查询。
$DBcon->query(@strSQL);