要准备具有可变数量参数的动态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中文网其他相关文章!