我在通过 PHP 更新表时遇到困难。 使用 MySQL 提示符或客户端应用程序,SQL 命令工作正常,但当我在 PHP 中使用 PDO 尝试它时,它失败了。
我已经删除了“desc”字段,并且 PHP 脚本可以正常工作。我认为它与 ASC/DES
混淆了$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "UPDATE Menu SET name=:name, desc=:desc WHERE id = :id"
$st = $conn->prepare ( $sql );
$st->bindValue( ":id", $this->id, PDO::PARAM_INT );
$st->bindValue( ":name", $this->name, PDO::PARAM_STR );
$st->bindValue( ":desc", $this->name, PDO::PARAM_STR );
$b = $st->execute();
我很确定它只是从字段名称到 SQL 语言构造混淆,但是有没有办法告诉 PDO 对象/准备好的语句 desc 是字段名称?
即链接的东西
(this does not work by the way)
$sql = "UPDATE Menu SET name=:name, \'desc\'=:desc WHERE id=:id
最佳答案
您有 id = 1
,而不是 id = :id
您无法绑定(bind)到不存在的参数。
此外,DESC
是一个保留字,如果不使用反引号引用它,就无法使用它。
$sql = "UPDATE `Menu` SET `name`=:name, `desc`=:desc WHERE `id`=:id"
关于PHP PDO 语句 MySQL 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9172757/