ホームページ >データベース >mysql チュートリアル >IN 演算子で MySQLi プリペアド ステートメントを適切に使用するにはどうすればよいですか?

IN 演算子で MySQLi プリペアド ステートメントを適切に使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 11:00:25821ブラウズ

How to Properly Use MySQLi Prepared Statements with the IN Operator?

IN 演算子を使用した MySQLi プリペアド ステートメント

この記事では、MySQLi で IN 演算子とプリペアド ステートメントを使用してデータベースから行を選択する問題について説明します。 。元の投稿者によって提供された最初のコード:

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();

データベース内にデータが存在するにもかかわらず、結果を返すことができませんでした。

解決策には、参照によって各パラメーターを手動でバインドする必要があります:

$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$arParams = array();

foreach($lastnames as $key => $value)
    $arParams[] = &$lastnames[$key];

$count_params = count($arParams);

$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);
$data_res->execute();

このアプローチにより、IN 演算子を使用した準備済みステートメントの正しい実行が可能になり、入力配列に一致するすべてのデータが確実にステートメントから返されます。データベース。

以上がIN 演算子で MySQLi プリペアド ステートメントを適切に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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