php - 如何使用带有数组作为第二个参数的 mysqli::bind_param

标签 php arrays mysqli prepared-statement bindparam

这个查询应该将一个新用户插入到“用户”表中

$user = DB::getInstance()->insert('users', array(
        'username' => 'jim',
        'password' => 'pass',
        'salt' => 'salt'
       )
);

对应的insert()

public function insert($table, $fields = array())
{
    if (count($fields)) {
        $keys   = array_keys($fields);
        $values = null;
        $x      = 1;
        foreach ($fields as $field) {
            $values .= "?";
            if ($x < count($fields)) {
                $values .= ', ';
            }
            $x++;
        }
        $sql = "INSERT INTO users (`" . implode('`,`', $keys) . "`) VALUES ({$values})";
        echo $sql;
        if($this->queryDB($sql,$fields)){
            echo "its good";
            return true;
        }else{
            echo "bad query";
        }
    }
    return false;
}

尝试绑定(bind)查询值数组($param)作为 bind_param 函数的第二个参数

    $stmt = $this->mysqli->prepare($pattern);
    $stmt->bind_param("sss", $param);
    $stmt->execute();

此代码不断返回“mysqli_stmt::bind_param():类型定义字符串中的元素数量与绑定(bind)变量的数量不匹配”错误。

我也试过 call_user_func_array,但总是出现同样的错误。我做错了什么?

最佳答案

从 PHP 5.6 开始,您可以使用 splat 运算符 ...

$stmt->bind_param("sss", ...$param);

关于php - 如何使用带有数组作为第二个参数的 mysqli::bind_param,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50653406/

相关文章:

php - 为什么 postgresql 不存储我的整个(PHP)浮点值?

php - 使用 PDO 准备语句插入多行

php - CodeIgniter 如何访问 Twig 模板中的 session 变量

c - 将数组传递给函数时使用的正确模式

php - 我可以在 MySQL 中使用 Distinct 和 Union All 吗?

php - 锁定 MySql 表或数据以防止获取相同的数据

c# - 将字节数组从 C dll 返回到 C#

Javascript 对标题数组进行排序的方式与根据数据数组的排序方式相同

php - 如何获取mysql中本地infile命令的权限

php - PHP 中的 $stmt 是什么