ホームページ >バックエンド開発 >PHPチュートリアル >準備されたステートメントで LIKE '%{$var}%' を使用する際の「変数の数が一致しません」エラーを回避するにはどうすればよいですか?
準備されたステートメントで LIKE '%{$var}%' を適切に使用する方法
LIKE '%{$var を使用しようとする場合}%' をプリペアド ステートメントで使用すると、一部のユーザーに「変数の数がプリペアド ステートメントのパラメータの数と一致しません。」というエラーが発生します。これは、準備されたステートメントには特定の数のパラメーターが必要であり、構文 '%{$var}%' では明確なパラメーター数が提供されないためです。
間違った例
$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';
改善された解決策
この問題を解決するには、まず次のことを行う必要があります。ワイルドカードを含む LIKE 式を含む変数を作成します。次に、bind_param() メソッドを使用して変数を準備済みステートメントにバインドします。
$likeVar = "%" . $yourParam . "%"; $stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->bind_param("s", $likeVar); $stmt->execute();
この方法に従うと、大文字と小文字を区別せずに部分一致を許可しながら、準備済みステートメントを使用して LIKE 検索を効果的に実行できます。
以上が準備されたステートメントで LIKE '%{$var}%' を使用する際の「変数の数が一致しません」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。