在PHP 中動態綁定MySQL 綁定參數
如您所發現的,PHP 的MySQLi 擴充中的bind_param 方法在動態處理多個參數或無參數查詢方面可能受到限制。以下是解決此問題的策略:
使用call_user_func_array
以下程式碼片段可讓您動態建立和綁定參數陣列:
if (strnatcmp(phpversion(), '5.3') >= 0) { $refs = array(); foreach ($arr as $key => $value) $array_of_params[$key] = &$arr[$key]; call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params); }
使用PHP 5.6語法
在PHP 5.6 及更高版本中,您可以利用解包運算子和get_result()
方法: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(); }
方法:
$mysqli = new database(DB_HOST, DB_USER, DB_PASS, DB_NAME); $output = new search($mysqli); $sql = "SELECT * FROM root_contacts_cfm WHERE root_contacts_cfm.cnt_id = ? AND root_contacts_cfm.cnt_firstname = ? ORDER BY cnt_id DESC"; $res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
以上是PHP如何動態綁定MySQL參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!