在 MySQLi 中,希望透過綁定參數來防止 SQL 注入並最佳化效能。但是,如果某些 POST 參數為空,則需要單獨處理它們。
一個可能的方法是使用 call_user_func_array 函數以可變數量的參數呼叫 bind_param 方法。這使我們能夠動態建構查詢字串並僅為非空值綁定參數。
這是一個範例:
<code class="php">$paramNames = array('myvar1', 'myvar2', /* ... */); $params = array(); foreach ($paramNames as $name) { if (isset($_POST[$name]) && $_POST[$name] != '') { $params[$name] = $_POST[$name]; } } if (count($params)) { $query = 'UPDATE mytable SET '; foreach ($params as $name => $val) { $query .= $name.'=?,'; } $query = substr($query, 0, -1); $query .= 'WHERE id = ?'; $stmt = $mysqli->prepare($query); $params = array_merge(array(str_repeat('s', count($params))), array_values($params)); call_user_func_array(array(&$stmt, 'bind_param'), $params); }</code>
此程式碼循環遍歷 POST 參數,檢查它們是否是設定且不為空,並將它們加到陣列中。然後,它動態建立帶有非空參數的查詢字串,並使用 call_user_func_array 綁定值。
透過單獨處理空 POST 參數,我們可以在 MySQLi 中實現變數輸入綁定,確保只更新有效資料資料庫並避免不必要的更新。它是一種多功能且靈活的解決方案,可適應各種輸入組合。
以上是如何在MySQLi中實現空POST參數的變數輸入綁定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!