MySQLi クエリにおける複数のパラメータの柔軟なバインディング
現在、複数のパラメータを MySQLi クエリにバインドするために、次の繰り返し構造が採用されています。
if ($words_total == 1) { $statement -> bind_param("s", $words[0]); } // ... more if-else conditions for each possible number of parameters ...
クエリに必要な疑問符の数を計算するには、次のようにします。次のコードが使用されます:
$marks = ""; for($i = 1; $i<=$words_total; $i++) { if ($i == $words_total) $marks .= "?"; else $marks .= "?,"; }
引数アンパックによる改善されたアプローチ
幸いなことに、PHP 5.6 では引数アンパック演算子 (...) が導入されており、これにより、引数アンパック演算子 (...) が導入されています。複数のパラメータのバインド。静的な型の文字列に依存する代わりに、演算子を配列で使用できます。
// create an array of parameter values $parameters = [$words[0], $words[1], ... $words]; // create a type string dynamically $types = str_repeat('s', count($parameters)); // bind the array using argument unpacking $statement -> bind_param($types, ...$parameters);
このアプローチにより、パラメータの数に関係なくバインディングを動的に処理できます。
以上がMySQLi クエリで複数のパラメータを効率的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。