-3

自分では答えられない質問があります。最近、 PDO::lastInsertId が 0 を返すのはなぜですか?のユーザーと同様の問題がありました。. そのユーザーのように、私の問題は、PDO 準備済みステートメントの末尾からセミコロンを削除することで解決されました。

上記の投稿のような準備されたステートメントにセミコロンを付けて終了するべきではない理由を誰かが私に説明できるかどうか疑問に思っています。私はセミコロンを含む多くの PDO 準備済みステートメントを使用してきましたが、数日前まで問題はありませんでした。セミコロンの使用法に関する PDO のドキュメントには何も見つからないため、セミコロンを使用するかどうかに関する根本的な原則があるかどうかについて混乱しています。準備されたステートメントでセミコロンを使用することは常に悪い考えですか? もしそうなら、なぜですか?

ありがとうございました!

4

2 に答える 2

2

上記の投稿のような準備されたステートメントにセミコロンを付けて終了するべきではない理由を誰かが私に説明できるかどうか疑問に思っています。

実際にあなたが述べていることは単に間違っているので、それは難しいでしょう. セミコロンで終了する準備済みステートメントには問題はありません。

ですから、不思議に思っている間は、もう不思議に思う必要はありません。セミコロンについて説明することは何もありません。ただの区切り文字です。たとえば、次の準備を問題なく実行できます。

$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 ではなくデータベース サーバーで文書化されています。

于 2013-01-03T23:02:40.273 に答える
2

コード全体にセミコロンがあります。

彼らは正常に動作します。

リンクされた質問で受け入れられた回答は間違っています。

于 2013-01-03T22:43:26.173 に答える