調整bind_param()以進行動態輸入變數綁定
問題:
使用綁定可變數量的輸入變數bind_param() 方法可能具有挑戰性,特別是當某些變數可能為空且不應在資料庫中更新時。
答案:
call_user_func_array() 函數可以使用可變數量的參數來呼叫bind_param(),為這個問題提供了解。
實作:
-
定義輸入變數名稱:
- 建立變數名稱的陣列(例如,$paramNames = array('myvar1', 'myvar2', /* ... */)) .
-
過濾非空變數:
- 迭代輸入變數名稱並檢查每個變數是否已設定且$_POST 陣列中不為空(例如$params[$name] = $_POST[$name];) 。
-
建構查詢字串:
- 透過將非空變數附加到$query 變數來建構查詢字串(例如foreach ($params as $name => $val) { $query .= $name.'=?,'; }).
-
調整查詢語法:
- 從$query 中刪除尾隨逗號並添加剩餘部分查詢(例如$query = substr($query, 0, -1); $query .= 'WHERE id = ?';).
-
準備語句和綁定參數:
- 使用修改後的$query 準備語句,並使用包含正確數量的s 字元的陣列呼叫bind_param() (例如, $params = array_merge(array (str_repeat('s', count($params))), array_values($params)))。
-
使用call_user_func_array()呼叫bind_param():
使用call_fm(Luncst. '), $params) 呼叫bind_param() 來傳遞可變數量的參數。
此技術允許動態輸入變數綁定、考慮空變數並確保僅在資料庫中更新有效資料。
以上是當某些變數可能為空時,如何使用bind_param()動態綁定PHP中的輸入變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!