php - 未捕获的异常 'PDOException' 消息为“SQLSTATE[42000] : Syntax error or access violation: 1064

标签 php mysql pdo

我在聊天时偶然发现了一个错误。错误是:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO guildchat(guildID, playerID, message, `time`, chattime) VALUES(?, ?,' at line 1' in C:\xampp\htdocs\sf\sexyutility.php:14 Stack trace:#0 C:\xampp\htdocs\sf\sexyutility.php(14): PDO->prepare('SELECT @cht := ...')#1 C:\xampp\htdocs\req.php(2659): chatInsert('tewtewt', 53, 35)#2 {main} thrown in C:\xampp\htdocs\sf\sexyutility.php on line 14

代码是:

function chatInsert($message, $guild, $player){
    $time = time();
    $chattime = $GLOBALS['db']->prepare("SELECT @cht := Max(chattime) AS chattimer FROM guildchat WHERE guildID = :guild; INSERT INTO guildchat(guildID, playerID, message, `time`, chattime) VALUES(:guild, :player, :msg, :timers, @cht + 1)");
    $chattime->bindParam(":guild", $guild);
    $chattime->bindParam(":player", $player);
    $chattime->bindParam(":msg", $message);
    $chattime->bindParam(":timers", $time);
    $chattime->execute();
    return $chattime->fetch(PDO::FETCH_ASSOC)['chattimer'] + 1;
}

最佳答案

使用 PDO prepare 一次只能执行一个查询。你跑了两个。 你必须在 2 个单独的语句中完成。

我想我错了。我不会删除答案,而是将此链接留在此处作为引用。

PDO Support for multiple queries

它受支持,但有一些注意事项。

关于php - 未捕获的异常 'PDOException' 消息为“SQLSTATE[42000] : Syntax error or access violation: 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678113/

相关文章:

php - 是否在 Yii 中使用 "emulatePrepare"?

php - 查看某个时间段是否与当前时间匹配

php - 使用 Laravel DB Seed 插入 100 万条记录

php - 150个字段更新 - PHP + MYsql最佳解决方案

mysql - 如何在ubuntu上连接ejabberd和mysql?

c# - 关闭 MySqlDataReader 的问题

php - 无法将参数绑定(bind)到 WHERE 子句 PDO

php - 如何在 PDO 中使用 session ?

php - MYSQL 选择多对多

php - 在同一页面中使用多个表单时 Zend_Form 值会丢失