在 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>'; }
这些解决方案提供了更大的灵活性和MySQL 查询的动态绑定功能。
以上是PHP如何动态绑定MySQL参数?的详细内容。更多信息请关注PHP中文网其他相关文章!