我有一个功能可以做到这一点:
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); }
哪个发送到我的数据库类,它执行以下操作:
public function bind($query, $type, $params) { $this->query = $query; $stmt = $this->mysqli->prepare($this->query); $stmt->bind_param($type, $param); $stmt->execute; }
问题是这不起作用。
我希望做的是获取$params列表,并在后面列出它们$type,以使查询类似于:
$params
$type
$stmt->bind_param('ssssss', $firstName, $lastName, $address, $postcode, $email, $password);
但是很明显,我走错了路。
有没有办法使数组…按原样转换为要在bind_param查询阶段打印出来的列表?
bind_param
call_user_func_array “使用参数数组调用回调”
call_user_func_array(array($stmt, "bind_param"), array_merge(array($type), $params));
应该做的工作
更新 :您还必须更改您的params数组:
$params = array(&$firstName, &$lastName, &$address, &$postcode, &$email, &$password);
如mysqli_stmt::bind_param预期的那样,通过引用提供第二和以下参数。
mysqli_stmt::bind_param
编辑:您的查询似乎是错误的。也许您的字段少于那里的变量。做:
"INSERT INTO Users (field1, field2, field3, field4, field5, field6) VALUES (?, ?, ?, ?, ?, ?)"
您用正确的名称替换字段的名称