リファレンス: PDO に関するよくある質問
PDO とは何ですか?
PHP データ オブジェクト (PDO) ) は、さまざまなデータベースにアクセスするための一貫した移植可能なインターフェイスを提供する PHP のデータベース抽象化レイヤーです。システム。
よくある質問
1. PDO クエリは失敗しますが、エラー メッセージは表示されません
データベース エラーを表示するには、PDO エラー モードを例外に設定します:
$dsn = "mysql:host=$host;dbname=$db;charset=utf8"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]; $pdo = new PDO($dsn, $user, $pass, $opt);
try-catch ブロックを使用してエラーを適切に処理するか、より詳細な制御のためのカスタム エラー ハンドラー。
2. LIKE 演算子を使用した準備済みステートメント
検索語にプレースホルダーを使用し、PDO::quote() を使用して LIKE 演算子をエスケープします。例:
$stmt = $pdo->prepare("SELECT * FROM users WHERE name LIKE ?"); $stmt->execute(['%search_term%']);
3. IN () のプリペアド ステートメント Operator
値の配列を作成し、それを 2 番目のパラメーターとして bindingParam():
$values = [1, 2, 3]; $stmt = $pdo->prepare("SELECT * FROM users WHERE id IN (?)"); $stmt->bindParam(1, $values, PDO::PARAM_INT, count($values)); $stmt->execute();
4 に渡します。識別子またはキーワードのバインド
準備されたステートメントを使用して識別子またはキーワードをバインドすることはできません。これらの値をエスケープして保護するには、PDO::quote() などの通常の PDO メソッドを使用します。
5. LIMIT ステートメント内の PDO プリペアド ステートメント
$stmt = $pdo->prepare("SELECT * FROM users ORDER BY id LIMIT ?"); $stmt->bindParam(1, $limit, PDO::PARAM_INT); $stmt->execute([$limit]);
機密情報が公開され、ユーザーが混乱する可能性があるため、try-catch ブロックなしでエラー メッセージを表示することはお勧めできません。
>以上がPHP で PDO を効果的に使用してデータベースのクエリとエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。