用参数数组绑定参数 [英] Bind Param with array of parameters

查看:56
本文介绍了用参数数组绑定参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个执行此操作的功能:

I have a function that does this:

function registerUser($firstName, $lastName, $address, $postcode, $email, $password)
{
    $params = array($firstName, $lastName, $address, $postcode, $email, $password);
    $result = $this->db->bind("INSERT INTO Users VALUES (?, ?, ?, ?, ?, ?)", 'ssssss', $params);
}

哪个发送到我的数据库类,它执行以下操作:

Which sends off to my database class, which does this:

public function bind($query, $type, $params)
{
    $this->query = $query;
    $stmt = $this->mysqli->prepare($this->query);
    $stmt->bind_param($type, $param);
    $stmt->execute;
}

问题是这不起作用.

我希望做的是获取$params列表,并在$type之后列出它们,以便查询类似于:

What I was hoping to do, was to take the $params list and have it list them after the $type, so that the query would resemble:

$stmt->bind_param('ssssss', $firstName, $lastName, $address, $postcode, $email, $password);

但是显然我是用错误的方式来做的.

But obviously I'm going about it the wrong way.

是否有一种方法可以将数组...按原样转换为要在bind_param查询阶段打印出来的列表?

is there a way to make the array...transform as it were, into a list to be printed out at the bind_param query stage?

推荐答案

call_user_func_array 使用参数数组调用回调"

call_user_func_array "Call a callback with an array of parameters"

call_user_func_array(array($stmt, "bind_param"), array_merge(array($type), $params));

应该做这份工作

UPDATE :您还必须更改参数数组:

UPDATE: you have also to change your params array:

$params = array(&$firstName, &$lastName, &$address, &$postcode, &$email, &$password);

mysqli_stmt::bind_param希望通过引用获得第二个及以下参数.

as mysqli_stmt::bind_param expects the second and the following parameters by reference.

您的查询似乎是错误的.也许您的字段少于那里的变量.做:

Your query seems to be wrong. Maybe you have less fields than you have variables there. Do:

"INSERT INTO Users (field1, field2, field3, field4, field5, field6) VALUES (?, ?, ?, ?, ?, ?)"

用正确的名称替换字段名称

where you replace the name of the fields by the correct names

这篇关于用参数数组绑定参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆