1 回答
TA贡献1812条经验 获得超5个赞
在MySQL中,标识符不能作为值提供。
对列的引用必须出现在 SQL 语句的文本中,它们不能通过绑定参数提供。这适用于表名、列名、函数名。
没有解决方法;这是一个设计限制。这有几个原因。最直接的原因之一是了解SQL语句的准备方式,提出执行计划所需的信息,表和列必须在准备时知道(用于语义检查和特权检查)。实际值可以推迟到执行时间。
绑定占位符用于提供值,而不是标识符。
通过给定的代码,MySQL看到的是沿着以下路线的东西
UPDATE `mytable` SET 'a string value' WHERE `id_col` = 42
而我的学习进度正在犹豫不决。'a string value'
我们可以(也应该)对值使用绑定参数。
我们可以动态生成如下所示的 SQL 文本:
UPDATE `mytable`
SET `col_one` = :val1
, `col_two` = :val2
WHERE `id_col` = :id
在将SQL文本准备到语句中后,我们可以绑定值:
$sth->bindValue(':val1', $value_one , PDO::PARAM_STR );
$sth->bindValue(':val2', $value_two , PDO::PARAM_STR );
$sth->bindValue(':id' , $id , PDO::PARAM_INT );
然后执行
- 1 回答
- 0 关注
- 82 浏览
添加回答
举报