可変数の入力変数を指定したbind_param() の使用
MySQL プリペアド ステートメントでは、bind_param() を使用して変数をバインドします。 SQL クエリ内のプレースホルダー。ただし、フォーム データなどの動的な入力変数を扱う場合、空の値や欠損値を処理するのが難しい場合があります。
問題:
通常、 bind_param() には特定の数の入力変数が必要で、値が空の場合はエラーが発生します。疑問が生じます: 一部の入力変数が空の場合、この状況を効果的に管理するにはどうすればよいですか?
解決策:
革新的なアプローチの 1 つは、call_user_func_array() 関数を利用して、可変数の引数を指定して、bind_param() を呼び出します。以下に段階的な解決策を示します:
-
パラメータ名の配列を作成します: 更新するすべてのフォーム フィールドの名前を保持する配列を定義します。
-
パラメータの空の配列を初期化します: 空ではないフィールド値を格納する新しい配列を作成します。
-
パラメータ名を反復処理します:パラメータ名の配列。名前ごとに、$_POST の対応する値が設定されており、空でないかどうかを確認します。その場合は、パラメーターの名前と値をパラメーター配列に追加します。
-
クエリ文字列を構築します: 空ではないパラメーターのプレースホルダー (?) を動的に追加して、SQL クエリ文字列を構築します。
-
ステートメントを準備します: $mysqli->prepare() を使用して、変更されたクエリ文字列を準備します。
-
データ型の配列を作成します: 決定パラメータのデータ型を調べ、その型を表す文字の配列を作成します (例: 2 つの文字列の場合は「ss...」)。
-
型と値の配列を結合します。単一の配列を作成するには、空ではないパラメータ値の配列を含む配列を入力します。
-
call_user_func_array を使用して、bind_param() を呼び出します: マージされた配列を引数として call_user_func_array() に渡し、bind_param を効果的に呼び出します。 () は可変数のパラメータを持ちます。
以上が動的な数の入力変数を使用して変数を MySQL プリペアドステートメントにバインドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。