【发布时间】:2013-04-13 19:16:40
【问题描述】:
不知道是什么导致了错误mysqli_stmt::bind_param() 的参数 3 应该是一个参考,在...中给出的值
PDO
$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1,"2","3","4");
$param_type = "isss";
$sql_stmt = mysqli_prepare ($mysqli, $query);
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), $params));
mysqli_stmt_execute($sql_stmt);
也试过OOP
OOP
$insert_stmt = $mysqli->prepare($query);
array_unshift($params, $param_type);
call_user_func_array(array($insert_stmt, 'bind_param'), $params);
$insert_stmt->execute();
但同样的错误,只是现在参数 2 引起了问题。
那么,$params 有什么问题?我需要 $params 是一个值数组。
【问题讨论】:
-
你为什么用
call_user_func_array? -
@MarcelKorpel 因为没有 mysqli 就无法使用
-
@MarcelKorpel 这太手动了,无法进行任何抽象。
-
@MarcelKorpel 使抽象成为可能。为了能够将任何数组绑定到任何查询,只需将它们作为参数传递给某个辅助函数,而不是直接在应用程序代码中编写所有这些大量的 bind_params,使其臃肿。
-
@MarcelKorpel 甚至根本没有任何帮助程序 - 但只是在 任意 大小的
$params数组的情况下,这种情况经常发生。