PDO准备声明麻烦

时间:2014-03-03 21:29:24

标签: php mysql pdo prepared-statement

我目前正在尝试运行一个查询,其中mysql表列的当前值增加1 ...让我用mysql查询示例显示这个

$sql = mysql_query("UPDATE `table` SET quantity=quantity+1 WHERE id='$id'");

我无法在PDO准备好的声明中这样做......

$sql = "UPDATE `table` SET quantity=:quants+1 WHERE id=:userid";
$sql_prep = $db->prepare($sql);
$sql_prep->bindParam(":quants", what will i write here??);
$sql_prep->bindParam(":userid", $id);
$sql_prep->execute();

需要帮助..!感谢

2 个答案:

答案 0 :(得分:3)

您不需要将其作为参数传递,只需执行:

$sql = "UPDATE `table` SET quantity=quantity+1 WHERE id=:userid";
$sql_prep = $db->prepare($sql);
$sql_prep->bindParam(":userid", $id);
$sql_prep->execute();

答案 1 :(得分:0)

您不需要保护quantity,因为您只是在增加数据库中已有的值。

 $sql = "UPDATE `table` SET quantity=quantity+1 WHERE id=:userid";

您也可以删除:quants

的绑定行
 $sql_prep = $db->prepare($sql);

 // NOT NEEEDED --> $sql_prep->bindParam(":quants", what will i write here??);

 $sql_prep->bindParam(":userid", $id);
 $sql_prep->execute();

预备语句用于保护通过查询从外部插入数据库的数据。