【问题标题】:PDO ERROR:SQLSTATE[42000]: Syntax error or access violation: 1064PDO 错误:SQLSTATE [42000]:语法错误或访问冲突:1064
【发布时间】:2014-03-13 21:59:40
【问题描述】:

请帮我解决以下错误:

ERROR:SQLSTATE[42000]: 语法错误或访问冲突:1064 你有 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 ':username 附近使用正确的语法, oncall_area = :oncall_area, oncall_month = :oncall_mo' 在第 2 行

我的代码是:

try {
$db = new PDO("mysql:host=$server;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "
UPDATE `oncall_users` 
   SET `username`       = :username,
       `oncall_area`    = :oncall_area,
       `oncall_month`   = :oncall_month,
       `oncall_year`    = :oncall_year,
       `oncall_day`     = :oncall_day,
       `order`          = :order,
       `mobile`         = :mobile,
       `email`          = :email,
       `ext`            = :ext,
        WHERE `id`      = :id";

$update = $db->exec($sql);

$update->bindParam(':username', $username, PDO::PARAM_STR);
$update->bindParam(':oncall_area', $oncall_area);
$update->bindParam(':oncall_month', $oncall_month);
$update->bindParam(':oncall_year', $oncall_year);
$update->bindParam(':oncall_day', $oncall_day);
$update->bindParam(':order', $order);
$update->bindParam(':email', $email);
$update->bindParam(':mobile', $mobile);
$update->bindParam(':ext', $ext);
$update->bindParam(':id', $id);

$count = $update->execute();
$db = null;        // Disconnect
}
catch(PDOException $e) {
  echo "ERROR:" . $e->getMessage();
}

【问题讨论】:

  • 您的用户是否有表的更新权限?
  • 什么是$db->exec($sql);??这是准备陈述还是做什么?
  • 错了吗?谢谢
  • 即使我使用 prepare 也会出现同样的错误
  • 我想更新我的数据库。

标签: php mysql syntax


【解决方案1】:

这里有一个额外的逗号:

`ext` = :ext,

替换为:

`ext` = :ext

这就是导致您的问题的原因。

【讨论】:

  • 感谢您的帮助谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2015-10-12
  • 1970-01-01
  • 2018-10-09
  • 2017-10-29
  • 2014-01-14
相关资源
最近更新 更多