PHP PDO 语句 MySQL 查询失败

标签 php mysql sql

我在通过 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/

相关文章:

php - 如何在 NodeJS 的请求中对表单字段中的数组进行编码?

php - 从表中选择额外数据 [Laravel]。传递参数?

php - 单击侧边栏菜单链接时如何获取 mysql 数据

sql - 如何在 Postgres 9.x 中插入 now() + INTERVAL

mysql - 如何将特定单元格提取到 EXCEL 中的 SQL

php - 如何正确使用mysql中的项目ID作为特定项目的链接?

php - Doctrine 仅返回空缓存的结果

java - 使用执行查询在左连接子句中添加 =value

mysql - MySQL InnoDB如何实现Read Uncommitted隔离级别

sql - 我如何去匹配两个表中的三个字段以便在匹配的情况下更新相同的表