ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi プリペアドステートメントを使用して動的 LIKE クエリを安全に構築する方法

MySQLi プリペアドステートメントを使用して動的 LIKE クエリを安全に構築する方法

DDD
DDDオリジナル
2024-12-05 21:30:12697ブラウズ

How to Securely Build Dynamic LIKE Queries with MySQLi Prepared Statements?

動的 LIKE 条件を含むプリペアド ステートメントの使用

MySQLi プリペアド ステートメントを使用して、動的な数の LIKE 条件を持つ SELECT クエリを構築するには、次のようにします。パラメーターの周囲をパーセント記号 (%) で囲むことが重要です。

これを PHP で実装するためのステップバイステップのガイドです:

  1. 式とデータ型を抽出して準備します:
    ユーザーは、explode() を使用して個々の検索語を入力します。 WHERE 句の式 ($conditions) とデータ型と値の組み合わせ ($parameters) を格納するための配列を初期化します。
$conditions = [];
$parameters = [''];
  1. 式とパラメータの構築:
    検索用語を反復処理して、一連の LIKE 式を作成し、対応するデータ型を$parameters.
foreach ($search_exploded as $value) {
    $conditions[] = "name LIKE ?";
    $parameters[0] .= 's';
    $parameters[] = "%{$value}%";
}
  1. クエリの準備と実行:
    $condition を WHERE 句に連結します。クエリを含むステートメントを準備し、スプラット演算子 (...) を使用して $parameters をバインドし、実行します。
$query = "SELECT * FROM info";
if ($conditions) {
    $stmt = $mysqli->prepare($query . ' WHERE ' . implode(' OR ', $conditions));
    $stmt->bind_param(...$parameters);
    $stmt->execute();
    $result = $stmt->get_result();
} else {
    $result = $conn->query($query);
}

これらの手順に従うことで、動的クエリを効果的に実行できます。 MySQLi プリペアドステートメントを使用した多数の LIKE 条件により、柔軟性とセキュリティの両方が保証されます。

以上がMySQLi プリペアドステートメントを使用して動的 LIKE クエリを安全に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。