上記の投稿のような準備されたステートメントにセミコロンを付けて終了するべきではない理由を誰かが私に説明できるかどうか疑問に思っています。
実際にあなたが述べていることは単に間違っているので、それは難しいでしょう. セミコロンで終了する準備済みステートメントには問題はありません。
ですから、不思議に思っている間は、もう不思議に思う必要はありません。セミコロンについて説明することは何もありません。ただの区切り文字です。たとえば、次の準備を問題なく実行できます。
$stmt = $conn->prepare('
INSERT INTO config (`option`) VALUES (:option);;;;;
');
$result = $stmt->execute([':option' => "Insert Option " . uniqid() ]);
$result
で行bool(true)
を挿入します。コードを共有していないため、何を行って何が失敗したかを判断するのは困難ですが、ご覧のようにセミコロンを楽しみのために積み重ねることもできます。
私はセミコロンを含む多くの PDO 準備済みステートメントを使用してきましたが、数日前まで問題はありませんでした。
これは、セミコロンが実際には問題ではないことを明確に示しています。そうしないと、最初からすべてのクエリが失敗しているはずです。
セミコロンの使用法に関する PDO のドキュメントには何も見つからないため、セミコロンを使用するかどうかに関する根本的な原則があるかどうかについて混乱しています。準備されたステートメントでセミコロンを使用することは常に悪い考えですか? もしそうなら、なぜですか?
それはSQLの一部だからです。使用しているデータベース サーバーの SQL ドキュメントを参照してください。セミコロンの使用のすべての栄光の詳細を概説します。これは PDO 自体の一部ではないため、PDO ではなくデータベース サーバーで文書化されています。