LIKE
検索の最適化パターン マッチングに LIKE
演算子を使用するデータベース クエリは、脆弱性を防止し、パフォーマンスを確保するために慎重に処理する必要があります。 不適切に使用するとエラーが発生する可能性があります。
いくつかの欠陥のあるアプローチを調べてみましょう:
<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
SQL 文字列内の変数の数が bind_param()
に指定されたパラメーターと一致しないため、これは失敗します。
<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
クエリ文字列内のワイルドカード文字 (%{}) の配置が間違っているため、構文エラーが発生します。
正しい方法では、準備されたステートメントを使用し、疑問符のプレースホルダーを使用し、変数を適切にバインドします。
<code class="language-php">$likeVar = "%" . $yourParam . "%"; $stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->bind_param("s", $likeVar); $stmt->execute();</code>
このコード:
$yourParam
) にパーセント記号を連結してパターンを構築します。?
プレースホルダーを使用してクエリを準備します。bind_param()
を使用してパターン文字列 (文字列の「s」) をバインドします。LIKE
とともに準備されたステートメントを使用すると、SQL インジェクションが防止され、クエリの効率が向上します。
以上がプリペアドステートメントはどのようにして LIKE 検索の効率とセキュリティを向上させることができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。