將bind_param()與可變數量的輸入變數一起使用
在MySQL準備好的語句中,bind_param()用於將變數綁定到SQL 查詢中的佔位符。但是,當處理動態數量的輸入變數(例如表單資料)時,處理空值或缺失值可能具有挑戰性。
問題:
通常, bind_param() 需要特定數量的輸入變量,空值會導致錯誤。問題出現了:當某些輸入變數可能為空時,如何有效管理這種情況?
解決方案:
一種創新方法是利用 call_user_func_array() 函數使用可變數量的參數呼叫bind_param()。這是一個逐步解決方案:
-
建立參數名稱陣列:定義一個陣列來保存您要更新的所有表單欄位的名稱。
-
初始化參數的空數組:建立一個新數組來儲存非空字段值。
-
迭代參數名稱:循環遍歷參數名稱陣列。對於每個名稱,檢查 $_POST 中對應的值是否已設定且不為空。如果是,則將參數名稱和值新增至參數陣列。
-
建立查詢字串:建立 SQL 查詢字串,為非空參數動態新增佔位符 (?)。
-
準備語句:使用 $mysqli->prepare() 準備修改後的查詢字串。
-
建立資料類型陣列:決定參數的資料類型,並建立一個表示類型的字元陣列(例如,「ss...」表示兩個字串)。
-
合併類型和值數組:合併使用非空參數值數組鍵入 array 以建立單一數組。
-
使用 call_user_func_array 呼叫 bind_param(): 將合併的陣列作為參數傳遞給 call_user_func_array() 以有效呼叫 bind_param () 具有可變數量的參數。
以上是如何使用動態數量的輸入變數將變數綁定到 MySQL 準備語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!