ホームページ >データベース >mysql チュートリアル >IN 演算子で MySQLi プリペアド ステートメントを効果的に使用するにはどうすればよいですか?
IN 演算子を使用した MySQLi プリペアド ステートメント
プリペアド ステートメントは、パラメータ値を個別に指定できるため、従来のクエリに比べてセキュリティとパフォーマンスが強化されています。発言そのもの。ただし、IN 演算子でプリペアド ステートメントを使用する場合、アプローチが正しくないと問題が発生する可能性があります。
問題
最初で述べたようにクエリで、bind_param('s', $in_statement) を使用してコンマ区切りの値の文字列をプリペアド ステートメントにバインドすると、データが
解決策
解決策は、各パラメータ値を個別に処理することです。
コード例
<?php $lastnames = ['braun', 'piorkowski', 'mason', 'nash']; $arParams = []; 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 = $mysqli->prepare("SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ({$params})"); call_user_func_array([$data_res, 'bind_param'], $arParams); $data_res->execute(); $result = $data_res->get_result(); while ($data = $result->fetch_array(MYSQLI_ASSOC)) { // Your code here... } $result->free(); $data_res->close();
このアプローチにより、IN 演算子を使用して準備されたステートメントに複数の値を適切にバインドできます。
以上がIN 演算子で MySQLi プリペアド ステートメントを効果的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。