要準備具有可變數量參數的動態SQL語句,PHP中的bind_param方法通常會帶來挑戰。本文將引導您完成在 PHP 中動態產生 bind_param 語句的過程,探索現有的解決方案和潛在的增強功能。
提供的程式碼片段依賴於使用型別說明符後跟單一變數作為參數。為了克服缺乏對多個參數的支持,請嘗試使用 call_user_func_array 的自訂解決方案。但是,它遇到了 PHP 版本相容性問題。
PHP 5.6 引入了解包運算符 (...),可用於簡化動態綁定。請考慮以下增強型程式碼:
public function get_custom_result($sql, $types = null, $params = null) { $stmt = $this->mysqli->prepare($sql); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) return false; return $stmt->get_result(); }
透過利用解包運算符,程式碼動態地將 $params 陣列解包為單獨的參數,從而有效地取代了多個 bind_param 呼叫的需要。
增強方法可以使用如下:
$res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = $res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
這個範例準備帶有兩個參數「1」和「Tk」的SQL 語句,並執行查詢。然後取得並顯示結果。
雖然增強綁定方法效果很好,但還有其他策略需要考慮:
以上是如何在 PHP 中動態產生 MySQLi 的「bind_param」語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!