Webアプリケーションを開発するときは、データベースクエリ操作を使用することがよくあります。データベースインタラクションにPHPのPDOを使用する場合、クエリが失敗した場合、多くの初心者は単に「クエリが失敗した」プロンプトを返します。
ユーザーエクスペリエンスとシステムの堅牢性を向上させるために、 PDO :: ErrorCodeを使用してPDOSTATEMENT :: FETCHを使用して、クエリ結果についてより詳細な判断と友好的なプロンプトを作成できます。
ユーザー情報を照会し、PDOを使用してデータベース操作を実行する関数を開発しているとします。
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $_GET['id']]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($stmt->errorCode() !== '00000') {
// SQL 実行エラー
error_log('データベースエラーコード: ' . $stmt->errorCode());
echo 'システムは忙しいです,後でもう一度やり直してください。';
} elseif (!$result) {
// クエリは成功しましたが、結果はありませんでした
echo '対応するユーザー情報は見つかりませんでした。';
} else {
// クエリは成功し、結果があります
echo 'ユーザー名: ' . htmlspecialchars($result['username']);
}
} catch(pdoexception $ e){
//接続エラーまたはSQL構文エラーをキャッチします
error_log( 'pdo例外:'。$ e-> getMessage());
ECHO 'システムエラーが発生した場合、管理者(M66.NET)に連絡してください。 ';
}
?>
分析と最適化
上記の例では、 Fetchを使用してクエリ結果を取得し、同時にエラーコードを組み合わせてSQLエラーがあるかどうかを判断します。これには次の利点があります。
エラータイプの区別:SQLの実行が失敗したか(構文エラー、フィールドが存在しないなど)、クエリが成功したがデータが返されなかったか(条件が一致しなかった場合など)かどうかを明確に知ることができます。
ロギングの詳細は詳細です。エラーコードの記録または例外情報は、問題をすばやく見つけるのに役立ちます。
ユーザープロンプトはよりフレンドリーです。単純で粗雑な「間違った」インシデントではなく、クリアプロンプト情報をユーザーに返します。
さらなるアプローチ
大規模なプロジェクトでは、一般的な関数としてエラー処理をカプセル化することをお勧めします。例えば:
function handleQuery(PDOStatement $stmt) {
if ($stmt->errorCode() !== '00000') {
error_log('SQL 错误 [' . $stmt->errorCode() . ']: ' . implode(', ', $stmt->errorInfo()));
return ['error' => '数据库查询失败,请稍后重试 (m66.net)'];
}
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result) {
return ['error' => '関連する記録は見つかりませんでした'];
}
return ['data' => $result];
}
次に、実際のコードでこの関数を呼び出して結果を処理します。
$stmt = $pdo->prepare('SELECT * FROM posts WHERE id = :id');
$stmt->execute(['id' => $postId]);
$response = handleQuery($stmt);
if (isset($response['error'])) {
echo $response['error'];
} else {
echo '文章标题: ' . htmlspecialchars($response['data']['title']);
}
まとめ
実際の開発では、 PDO ::エラーコードとフェッチの合理的な使用は、エラーを発見して対処するだけでなく、アプリケーションの安定性とユーザーエクスペリエンスを改善するのに役立ちます。ユーザーの場合、明確で明確なエラープロンプトは、空白のページやあいまいな「エラー」よりもはるかに信頼できます。開発者にとって、正確なエラー情報は、デバッグと最適化の鍵でもあります。
体験を改善し、小さな詳細から始めます。 「クエリに失敗した」プロンプト情報を無視しないでください!
関連タグ:
PDO
errorCode
PDOStatement