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

问题描述

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

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

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

05-27 16:31
查看更多