【发布时间】:2023-03-25 07:59:01
【问题描述】:
我正在尝试创建一个接收查询(sql)和参数(数组)的函数,但我收到此错误:
PHP 警告:mysqli_stmt::bind_param() 的参数 2 应为 一个参考,给定的价值
我的代码是:
function dbRead($query, $param) {
$mysqli = new mysqli(DB::READ_HOST, DB::READ_USER, DB::READ_PASS, DB::NAME);
// Check that connection was successful.
if ($mysqli->connect_error) {
$result = "Connection error";
} else {
// Check that $conn creation succeeded
if ($conn = $mysqli->prepare($query)) {
call_user_func_array(array($conn, 'bind_param'), $param);
$conn->execute();
$result = $conn->get_result();
$result = $result->fetch_array();
$conn->close();
} else {
$result = "Prepare failed";
}
}
$mysqli->close();
return $result;
}
$test = dbRead('SELECT * FROM user WHERE id=? and email=?', array(123,'example@example.com'))
如果我的功能码是
function dbRead($query, $param) {
$mysqli = new mysqli(DB::READ_HOST, DB::READ_USER, DB::READ_PASS, DB::NAME);
// Check that connection was successful.
if ($mysqli->connect_error) {
$result = "Connection error";
} else {
// Check that $conn creation succeeded
if ($conn = $mysqli->prepare($query)) {
$ref = array();
foreach ($param as $key => $value) {
$ref[$key] = &$param[$key];
}
call_user_func_array(array($conn, 'bind_param'), $ref);
$conn->execute();
$result = $conn->get_result();
$result = $result->fetch_array();
$conn->close();
} else {
$result = "Prepare failed";
}
}
$mysqli->close();
return $result;
}
我收到此错误
PHP 警告:mysqli_stmt::bind_param(): 类型中的元素数 定义字符串与绑定变量的数量不匹配
我的 PHP 版本是 5.4.36
【问题讨论】:
-
首先删除
email="?"中的引号 -
引用已删除 @Fred-ii- :)
-
好的。现在,我不知道您为什么使用
$conn,而您已经将连接声明为$mysqli = new mysqli,这可能是导致主要问题的原因。 -
@Fred-ii- 如果我直接使用
$mysqli我会收到此错误call_user_func_array() expects parameter 1 to be a valid callback, class 'mysqli' does not have a method 'bind_param'