メッセージで「PDOException」がキャッチされました。エラーが発生しました。エラーは次のとおりです。'SQLSTATE [42000]:構文エラーまたはアクセス違反:1064
致命的なエラー:メッセージでキャッチされない例外「PDOException」「SQLSTATE [42000]:構文エラーまたはアクセス違反:1064あなたは、あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文がINSERT INTO guildchat(guildID、playerID、message、 `time`、chattime)の近くで使用されるようにしてください。VALUES(?、?、 '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):chatInsert( 'tewtewt'、53,35)#2 にスローされたメイン#オンライン
コードは次のとおりです。
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;
}
エラーは、挿入クエリに構文エラーがあると言います。今あなたの質問は何ですか? –
別の実行中のスクリプトが 'SELECT'クエリと' INSERT'クエリの間に同じ 'chattime'を持つ行を挿入しないという保証はありません。 [トランザクション](http://php.net/manual/en/pdo.begintransaction.php)と[分離レベル](http://dev.mysql.com/doc/refman/5.7/en/set)を調べてください。 -transaction.html)を参照してください。 –
sexyutility.php? – brimstone