ホームページ >バックエンド開発 >PHPチュートリアル >準備されたステートメントで LIKE '%{$var}%' を使用する際の「変数の数が一致しません」エラーを回避するにはどうすればよいですか?

準備されたステートメントで LIKE '%{$var}%' を使用する際の「変数の数が一致しません」エラーを回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 21:52:13500ブラウズ

How to Avoid

準備されたステートメントで 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 サイトの他の関連記事を参照してください。

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