我正在聊天,我偶然发现了一个错误。错误是:
致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在'INSERT INTO guildchat(guildID,playerID,message,`time`,chattime)VALUES(?,?,'在第1行'C:\ xampp'附近使用正确的语法\ htdocs中\ SF \ sexyutility.php:14 堆栈跟踪:#0 C:\ xampp \ htdocs \ sf \ sexyutility.php(14):PDO-> prepare('SELECT @cht:= ...')#1 C:\ xampp \ htdocs \ req.php (2659):在 14 C:\ xampp \ htdocs \ sf \ sexyutility.php 中引发的chatInsert('tewtewt',53,35)#2} {main}
代码是:
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;
}
答案 0 :(得分:0)
您只能在PDO准备的情况下一次执行一个查询。你正在跑两个人。
你必须在两个单独的陈述中这样做。
我想我错了。我没有删除答案,而是将此链接留在此处作为参考。
PDO Support for multiple queries
它得到了支持,但有一些警告。