マルチコマンドスクリプト(例えば、CREATE TABLE
コマンド、おそらくはINSERT
コマンド)を実行する場合、特にPHP用MySQL PDOドライバスクリプトにエラー(構文またはロジック)が含まれていても、戻り値は常に0(エラー情報なし)です。PHP MySQL PDO :: execは、マルチコマンドスクリプトのエラーを発生させません。
これにより、長いビルドスクリプトを実行してからスクリプトが正常に実行されたかどうかを確認できなくなります。エラーが発生した場合、プロセスはスクリプトが失敗した時点で終了しますが、エラー情報は残さずに0が残っています。
私はこのサイトとネットを検索してこの質問への回答を得ました。一般的な回答は「あなたができることは何もありません」と思われます。私の現在の解決策は、いくつかのデータをチェックし、それに対する応答を評価する "ベリファイビルド"クエリを実行することです。これはひどく非効率的です。
誰もがこの問題に遭遇しましたか?もしそうなら、どのようにビルドスクリプトが正常に実行されたことを確認しましたか?
はい、私はこの問題に遭遇しました。それは本当の痛みです。エラー情報がないので* if *と*何が間違っているかを知る方法がないからです。しかし、PDOは実際には0を返し、失敗した場合は1を返しますが、エラー情報は表示されません。私がこの質問に2回投票することができたら、私はそうするだろう。 –