PHP PDO プリペアド ステートメント -- MySQL LIKE クエリ
PDO プリペアド ステートメントは、動的パラメータを使用して SQL クエリを実行する安全かつ効率的な方法を提供します。 MySQL LIKE クエリを使用する場合、適切な構文を使用することが重要です。
質問:
開発者は、PHP で PDO を使用して MySQL LIKE クエリを実行するという課題に直面しています。クエリは MySQL クライアントで正しく機能します。コードは結果を返せず、さまざまな構文のバリエーションが試みられましたが失敗しました。
回答:
コード内の間違った構文は準備ステートメントと実行ステートメント内にあります。 。問題は、二重引用符の不必要な使用と不適切なパラメーター バインディングです。修正されたコードは次のとおりです。
$sql = 'SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE :searchTerm LIMIT 25'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
説明:
プリペアド ステートメントは、パラメーター値を埋め込まずにクエリをデータベースに送信することで機能します。パラメータはデータベース エンジンによってバインドされるために個別に送信されます。 PDO は必要に応じてパラメータ値を自動的に引用符で囲むため、execute ステートメントのパラメータ値に二重引用符を追加することは正しくありません。
さらに、LIKE 演算子では、部分一致を許可するために検索語の前後にパーセンテージが必要です。間違ったコードでは、検索語が必要なパーセント記号ではなく二重引用符で誤って囲まれています。
これらの構文エラーを修正することで、PDO プリペアド ステートメントを使用して MySQL LIKE クエリを正常に実行できます。
以上がPHP で MySQL LIKE クエリに PDO プリペアド ステートメントを正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。