プリペアドステートメントについては、理論的には、パラメータを送信する前に、kweryのフォーマットが正しくないことがわかります。したがって、バグがあるのはクエリなのかユーザーデータなのかを考える必要はなく、すぐにわかります。
一般的なクエリについては、mysqliはMySQL5と同期しているのに対し、mysql_ oldAPIはMYSQL4までしかサポートしていないため、より適切なエラーメッセージ、または少なくとも最もわかりやすいメッセージが表示されます。
さらに、try \ catch構文を使用してmysqlエラーを検出でき、or die....
またはの代わりに例外を処理する方が簡単if(mysql_error())
です。
あなたが持っているドキュメントから:
<?php
define("MYSQL_CONN_ERROR", "Unable to connect to database.");
// Ensure reporting is setup correctly
mysqli_report(MYSQLI_REPORT_STRICT);
// Connect function for database access
function connect($usr,$pw,$db,$host) {
try {
$mysqli = new mysqli($host,$usr,$pw,$db);
$connected = true;
} catch (mysqli_sql_exception $e) {
throw $e;
}
}
try {
connect('username','password','database','host');
echo 'Connected to database';
} catch (Exception $e) {
echo $e->errorMessage();
}
mysqli_report(MYSQLI_REPORT_STRICT)
ドキュメントによると、重要な機能は次のとおりです。
MYSQLI_REPORT_STRICT
Throw a mysqli_sql_exception for errors instead of warnings.
mysqli_debug
eisが言ったように関数/メソッドもあります。