首页 >后端开发 >php教程 >PHP如何动态绑定MySQL参数?

PHP如何动态绑定MySQL参数?

Patricia Arquette
Patricia Arquette原创
2024-12-01 19:11:14911浏览

How Can I Dynamically Bind MySQL Parameters in PHP?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn