ホームページ > データベース > mysql チュートリアル > PHP で MySQL LIKE クエリに PDO プリペアド ステートメントを正しく使用する方法

PHP で MySQL LIKE クエリに PDO プリペアド ステートメントを正しく使用する方法

Mary-Kate Olsen
リリース: 2024-12-09 19:50:16
オリジナル
423 人が閲覧しました

How to Correctly Use PDO Prepared Statements for MySQL LIKE Queries in PHP?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート