mysqli_error()は、開発者にとって最もよく知られているエラー処理機能の1つです。その機能は、データベースの操作が失敗したときにエラーを説明する文字列を返すことです。たとえば、誤ったSQLステートメントを実行する場合:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "SELEC * FROM users"; // 不注意に書かれています SELECT
$result = $mysqli->query($sql);
if (!$result) {
echo "SQL 実行に失敗しました: " . mysqli_error($mysqli);
}
出力は次のようなエラーメッセージになります。
SQL 実行に失敗しました: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEC * FROM users' at line 1
これは、構文エラーの配置に役立ちます。
mysqli_error()とは異なり、 mysqli :: $情報は、 SQLステートメントが正常に実行された後、ステートメント処理結果に関するより多くのコンテキスト情報を提供します。特に、挿入、更新、削除などのステートメントを実行する場合、影響を受ける行の数、複製行がスキップされているかどうかなどがわかります。
例えば:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "UPDATE users SET status='active' WHERE last_login < '2024-01-01'";
$mysqli->query($sql);
echo "インパクトの詳細: " . $mysqli->info;
可能な出力は似ています:
インパクトの詳細: Rows matched: 3 Changed: 2 Warnings: 0
これは、合計3行が一致したことを意味しますが、実際には2行のみが変更されました。
SQLステートメントを実行する場合、これら2つの関数を一緒に使用できます。ステートメントが失敗した場合は、 mysqli_error()を使用してエラー情報を取得します。実行が成功した場合は、 mysqli :: $ infoを使用して実行の詳細を取得します。この方法は、バックグラウンド管理パネルに操作の結果をデバッグ、ロギング、さらには表示するのに適しています。
典型的なカプセル化関数は次のとおりです。
function executeQuery($mysqli, $sql) {
if ($mysqli->query($sql) === TRUE) {
return [
'success' => true,
'info' => $mysqli->info
];
} else {
return [
'success' => false,
'error' => mysqli_error($mysqli)
];
}
}
コール例:
$response = executeQuery($mysqli, "UPDATE users SET status='inactive' WHERE id IN (1,2,3)");
if ($response['success']) {
echo "正常に更新します,詳細は次のとおりです:" . $response['info'];
} else {
echo "更新に失敗しました,エラーメッセージ:" . $response['error'];
}
出力(成功):
正常に更新します,詳細は次のとおりです:Rows matched: 3 Changed: 3 Warnings: 0
出力(失敗時):
更新に失敗しました,エラーメッセージ:Unknown column 'statuz' in 'field list'
データ移行と同期タスク<BR> 大量のデータを作成するとき、データが更新されるかスキップされているかを知ることは、タスクが成功したかどうかを判断するために非常に重要です。
舞台裏のログシステム<br> 管理者の場合、操作が成功または失敗するかどうかを知る必要があるだけでなく、それに影響を与える特定の数のレコードを理解することも必要です。
自動テスト<br> 特定の行が影響すると予想される場合、これら2つの関数を組み合わせて使用すると、SQLステートメントの正確性が検証できます。