ホームページ > バックエンド開発 > PHPチュートリアル > 準備されたステートメントを使用して MySQLi で動的 LIKE 条件 SELECT クエリを構築する方法

準備されたステートメントを使用して MySQLi で動的 LIKE 条件 SELECT クエリを構築する方法

Barbara Streisand
リリース: 2024-12-06 10:48:11
オリジナル
506 人が閲覧しました

How to Build a Dynamic LIKE Condition SELECT Query in MySQLi Using Prepared Statements?

MySQLi 準備済みステートメントとして動的 LIKE 条件を使用した SELECT クエリを構築

問題

ユーザーは可変数の検索語を入力でき、対応するクエリは、これらの用語に基づいて動的に構築する必要があります。目的は、この動的入力に対応するプリペアド ステートメントを作成することです。

解決策

クエリ式の構築:

各検索語をバインド値のプレースホルダーを使用した LIKE 条件(%?).

例:

$construct .= "name LIKE %?%";
ログイン後にコピー

バインディング パラメーター:

データ型と入力値をパックします。 splat 演算子を使用して 1 つの配列に変換する(...).

例:

$parameters = ['sss', '%Bill%', '%N_d%', '%Dave%'];
ログイン後にコピー

ステートメントの準備と実行:

ステートメントの準備動的な WHERE 句を使用してバインドしますパラメータ。

$stmt = $mysqli->prepare('SELECT * FROM info WHERE ' . implode(' OR ', $conditions));
$stmt->bind_param(...$parameters);
$stmt->execute();
ログイン後にコピー

結果の取得:

必要に応じてクエリを実行し、結果を取得します。

$result = $stmt->get_result();
foreach ($result as $row) {
    echo '<div>' . $row['name'] . '</div>\n'; 
}
ログイン後にコピー

例は修正されましたコード:

<?php
$string = "my name";
$search_exploded = explode(" ", $string);
$num = count($search_exploded);

$conditions = [];
$parameters = [''];
foreach (array_unique($search_exploded) as $value) {
    $conditions[] = "name LIKE ?";
    $parameters[0] .= 's';
    $parameters[] = "%{$value}%";
}

$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);
}
foreach ($result as $row) {
    echo '<div>' . $row['name'] . '</div>\n'; 
}

?>
ログイン後にコピー

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

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