Php PDO准备的声明
我目前正在尝试运行一个查询,其中mysql表列的当前值将自身增加1。。。让我用mysql查询示例来说明这一点Php PDO准备的声明,php,mysql,pdo,prepared-statement,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 = 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();
需要帮助。。!谢谢您不需要将其作为参数传递,只需执行以下操作:
$sql = "UPDATE `table` SET quantity=quantity+1 WHERE id=:userid";
$sql_prep = $db->prepare($sql);
$sql_prep->bindParam(":userid", $id);
$sql_prep->execute();
您不需要保护
数量
,因为您只是在增加数据库中已有的值
$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();
准备好的语句用于保护通过查询从外部插入数据库的数据。sql\U注入如何?此查询是否会阻止sql注入…?无注入,传递给查询的唯一参数是userid。数量是数据库内部的。在转换或操作数据库内部的数据时,通常不必担心SQL注入,MySQL数据库已经在处理本机数据,不需要指导如何处理。此规则的例外情况是在存储过程中编写SQL查询。确定。。那么用户ID bindparam呢?。。我是否必须像PDO::PARAM_INT这样做以提高安全性,或者这样做可以吗?这样很好,参数数据类型是可选的。如果您的id字段是整数,那么您可以添加PDO::PARAM_INT,这只是为了完整性,但不是必需的。