ホームページ >バックエンド開発 >PHPチュートリアル >mysqli クエリで複数のパラメータを動的にバインドするにはどうすればよいですか?

mysqli クエリで複数のパラメータを動的にバインドするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 06:25:11156ブラウズ

How Can I Dynamically Bind Multiple Parameters in mysqli Queries?

mysqli クエリでの複数のパラメータの動的バインディング

従来、PHP 開発者は、複数のパラメータをバインドするために長い条件文や手動の連結に依存してきました。 mysqliのクエリ。これは面倒でエラーが発生しやすい可能性があります。

ハードコードされたパラメータのバインディング

あなたが提供した例は、疑問符とパラメータの種類の数が手動で設定されるハードコードされたアプローチを示しています。入力値の数に基づいて調整されます。これは機能しますが、動的クエリを処理するための理想的なソリューションではありません。

引数アンパック演算子

幸いなことに、PHP 5.6 では引数アンパック演算子 (...) が導入されました。複数の個別の関数を期待する関数にパラメータとして配列を渡すことができます。 argument.

Argument Unpacking を使用した解決策

PHP 5.6 で任意の数のパラメータを動的にバインドするには、次のアプローチを使用できます:

1.タイプ文字列を作成します: パラメータのタイプに対応する文字 (文字列の s など) をパラメータの数だけ連結します。

$types = str_repeat('s', count($array)); // returns sss...

2.パラメータをバインドします: 引数アンパック演算子を使用して、パラメータ値の配列型文字列とともに個別のパラメータとして渡します:

$stmt->bind_param($types, ...$array); 

例:

$array = ['a','b','c']; 
$sql   = "SELECT name FROM table WHERE city IN (?,".str_repeat('?,', count($array) - 2).")"; //  returns ?,?,?...
$stmt  = $mysqli->prepare($sql);
$stmt->bind_param('s', ...$array); 
$stmt->execute();

このアプローチはあらゆる数値をエレガントに処理します条件ステートメントや手動の連結を必要とせずに、入力パラメータの数を増やすことができます。

以上がmysqli クエリで複数のパラメータを動的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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