ユーザー定義変数を使用してパラメータを複数回バインドする
データベースの検索機能を実装する場合、通常は準備されたステートメントと検索語パラメータをバインドします。ただし、MySQL では、単一のプリペアド ステートメント内で名前付きパラメータを繰り返し使用することが制限されています。
代替ソリューション
複数のパラメータ (例:term1、:) を使用するのではなく、 term2) では、MySQL のユーザー定義変数の活用を検討してください。これにより、パラメータ値をデータベース自体内の一時変数に保存できます。
実装
これを実装するには:
SET @term = :term;
$stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute();
SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term;
利点
この方法にはいくつかの利点があります:
注意点
唯一の注意点は、ユーザー定義変数を設定するための追加のクエリを実行するオーバーヘッドです。ただし、その利点はこの小さな欠点をはるかに上回ります。
以上がユーザー定義変数は MySQL の反復パラメータ バインディング制限をどのように解決できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。