【发布时间】:2023-03-27 05:05:01
【问题描述】:
这是我创建准备好的语句的函数:
function query($query, $values_array) {
if ($stmt = $link->prepare($query)) {
for ($i = 1; $i < count($values_array); $i++) {
if (!$stmt->bind_param($values_array[0][$i-1], $values_array[$i])) {
return false;
}
}
if (!$stmt->execute()) {
return false;
}
$result = $stmt->get_result();
$stmt->close();
}
return $result;
}
$查询是
insert into table (var1, var2, var3, var4, var5, var6) values (?, ?, ?, ?, ?, ?)
$values_array 是
array(7) {
[0]=>
string(6) "diisii"
[1]=>
float(9)
[2]=>
int(1)
[3]=>
int(1)
[4]=>
string(5) "now()"
[5]=>
int(1)
[6]=>
int(1)
}
我无法找出问题所在,因为仅在将参数绑定到插入语句时才会引发此错误。选择语句没有问题!
【问题讨论】:
-
now()不起作用,因为它是作为文字字符串传递的。您可以尝试使用替代->bind_param签名,将类型字符串与所有参数一起传递,call_user_func_array(array($stmt, "bind_param"), $values_array) -
离开 now() 时出现同样的错误。是的,我知道 call_user_func_array 函数,但是我需要重组我不想做的 $values_array。