
bind_param() を動的入力変数バインディングに適応させる
問題:
bind_param() メソッドは、特に一部の変数が空でデータベース内で更新すべきではない場合に、困難になることがあります。
回答:
call_user_func_array() 関数は、可変数の引数を指定して binding_param() を呼び出すために使用され、この問題の解決策が提供されます。
実装:
-
入力変数名の定義:
- 入力変数名の配列を作成します (例: $paramNames = array('myvar1', 'myvar2', /* ... */)) .
-
空でない変数のフィルター:
- 入力変数名を反復処理し、各変数が設定されているかどうかを確認します$_POST 配列は空ではありません (例: $params[$name] = $_POST[$name];)。
-
Build Query String:
- $query 変数に空ではない変数を追加してクエリ文字列を構築します (例: foreach ($params as $name => $val) { $query .= $name.'=?,'; }).
-
クエリ構文の調整:
- $query から末尾のカンマを削除し、残りの部分を追加します。クエリ (例: $query = substr($query, 0, -1); $query .= 'WHERE id = ?';).
-
ステートメントの準備とパラメータのバインド:
- 変更された $query を使用してステートメントを準備し、正しい数の s 文字を含む配列で binding_param() を呼び出します (例: $params = array_merge(array) (str_repeat('s', count($params))), array_values($params))).
-
call_user_func_array() を使用して、bind_param() を呼び出す:
- call_user_func_array(array(&$stmt, 'bind_param'), $params) を使用して、bind_param() を呼び出し、可変数の引数を渡します。
この手法により、動的な入力変数バインディングが可能になり、空の変数が考慮され、データベース内で有効なデータのみが更新されるようになります。
以上が一部の変数が空の可能性がある場合に、bind_param() を使用して PHP の入力変数を動的にバインドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。