ホームページ > データベース > mysql チュートリアル > MySQLi プリペアド ステートメントと複数のパラメータで IN 演算子を正しく使用する方法は?

MySQLi プリペアド ステートメントと複数のパラメータで IN 演算子を正しく使用する方法は?

Linda Hamilton
リリース: 2024-12-17 17:06:15
オリジナル
652 人が閲覧しました

How to Correctly Use the IN Operator with MySQLi Prepared Statements and Multiple Parameters?

MySQLi プリペアド ステートメントで IN 演算子を使用する

MySQLi プリペアド ステートメントで IN 演算子と IN 演算子を使用する場合、適切にフォーマットすることが重要ですパラメータ。提供された最初のコード:

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
ログイン後にコピー

$in_statement が値の配列ではなく文字列であるため、エラーが発生します。この問題を解決するために、call_user_func_array 関数を使用する別のアプローチが提示されています。

$int = str_repeat('i', $count_params);
array_unshift($arParams, $int);

$q = array_fill(0, $count_params, '?');
$params = implode(',', $q);

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ('.$params.')');
call_user_func_array(array($data_res, 'bind_param'), $arParams);
ログイン後にコピー

この変更されたコードでは、

  • $count_params は、渡されるパラメーターの数を決定します。
  • str_repeat('i', $count_params) はパラメーターの数に等しい i 文字の文字列を作成します。各パラメータのデータ型を表します。
  • array_unshift($arParams, $int) は、データ型文字列を $arParams 配列の先頭に追加します。
  • array_fill(0, $count_params, '?') IN 句の疑問符の文字列を生成します。
  • call_user_func_array は次の目的で使用されます。 $arParams 配列を引数として渡して、複数のパラメータを同時にバインドします。

以上がMySQLi プリペアド ステートメントと複数のパラメータで IN 演算子を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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