在条件中使用变量时,mysql更新无法正常工作

时间:2016-09-02 18:32:23

标签: php mysql mysqli

当我在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']是我从另一个页面传递的值

2 个答案:

答案 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);