当我尝试下面的代码时,它会给我一个警告
mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables
$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');
$type = "ss";
$param = array("Maq","bool");
$params[] = &$type;
$params[] = &$param;
call_user_func_array( array($stmt, 'bind_param'), $params );
我真的不知道为什么会发生这种情况我在stackoverflow中读了很多相同的标题问题,但有些人用逗号分隔类型或需要更多类型但在我的情况下我认为它是正确的,但为什么我一直在收到警告?
解决方法:
$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');
$stmt->bind_param('ss', $param[0], $param[1]);
$stmt->execute();
//other version
$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');
$type = "ss";
$names = array("Maq", "bool");
$params = array(&$type, &$names[0], &$names[1]);
call_user_func_array(array($stmt, 'bind_param'), $params);
标签:php,mysqli
来源: https://codeday.me/bug/20190830/1766292.html