MySQLi を利用して SQL クエリを実行する場合、エラー レポートを効果的に処理することが重要です。提供されたコード スニペットでは、SQL 準備中のエラーを検出するために stmt_init() メソッドの戻り値が使用されていますが、次のような疑問が残ります。
prepare ステートメントの戻り値は SQL のエラーのみを示しているのか?ステートメントの準備エラーですか、それとも実行エラーですか?
これを解明するには、次の代替エラー処理を検討してください。アプローチ:
if($stmt_test->execute()) $errorflag=true;
このコードは、ステートメントの実行中にエラーをチェックします。ただし、prepare() メソッドの戻り値には準備エラーと実行エラーの両方が含まれるため、この追加チェックを実装する必要はありません。
包括的なエラー報告を確実に行うには、接続コードに次の行を追加することをお勧めします。 :
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
これにより、すべての mysqli エラーのレポートが有効になります。その結果、次の例に示すように、戻り値をチェックしてステートメントを直接記述する必要がなくなります。
$stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)"); $stmt->bind_param('iii', $x, $y, $z); $stmt->execute();
いずれかの段階でエラーが発生した場合、PHP 例外がスローされます。 。この例外は、他の PHP エラーと同様に処理または報告できます。 PHP エラー レポートを適切に構成すると、開発中にエラーが画面上に表示され、運用サーバーに記録されるようになります。
以上がMySQLi の「prepare()」戻り値は準備エラーのみを示しますか、それとも実行エラーも示しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。