MySQL LIKE クエリで PHP PDO プリペアド ステートメントを使用すると Null 結果が返されるのはなぜですか?
PHP PDO Prepared Statement MySQL LIKE クエリ: Null 結果の解決
MySQL では、一般的な操作には、LIKE 句を使用してデータをクエリして実行することが含まれます。ワイルドカード検索。 MySQL で PHP の PDO クラスを使用する場合、null 結果を回避するためにこれらのクエリを正しく作成する方法を理解することが重要です。
LIKE クエリが PDO クラスを通じて結果を返さないシナリオを調べてみましょう。 MySQL クライアントの元のクエリは次のとおりです。
<code class="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;</code>
このクエリは LIKE 演算子を利用して、hs.hs_text カラムの値内に searchTerm が含まれるすべての行を検索します。ただし、このクエリが PHP の PDO クラスに変換されると、結果が返されません。
<code class="php">$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'; $ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));</code>
PHP コードの問題は、WHERE 句の searchTerm の前後に二重引用符が存在することです。 PHP のプリペアド ステートメントでは、値をバインドするときに引用符は必要ありません。引用符は、文字列値がクエリ自体に直接埋め込まれている場合にのみ必要です。
問題を解決するには、searchTerm パラメーターから二重引用符を削除するだけです。
<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
この変更により、PDO が許可されます。
準備されたステートメントは、クエリからデータを分離することにより、セキュリティと効率を向上させます。これらは、データベースがバインド プロセスを処理できるようにすることで、SQL インジェクションの脆弱性を防止し、クエリの実行を最適化します。 MySQL データベースから効果的にデータを取得するには、PHP の PDO クラスで LIKE クエリを正しく使用する方法を理解することが不可欠です。
以上がMySQL LIKE クエリで PHP PDO プリペアド ステートメントを使用すると Null 結果が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LaravelのバックエンドでReactアプリを構築する:パート2、React
