【发布时间】:2014-09-01 10:39:18
【问题描述】:
我已经经历了相当多的 stackoverflow 线程,但我根本无法在准备查询后正确检索结果。我尝试了许多不同的解决方案,但在执行查询后似乎没有一个能够获取关联数组
$mysqli = new MySQLi('localhost', 'root', '', 'prac2');
$query = $mysqli-> prepare("SELECT * FROM `user` WHERE username=? and password=?");
$query-> bind_param('ii', $username, $password);
if($query-> execute()) {
$query->store_result();
if ($query -> num_rows > 0) {
$result = $mysqli->query($query);
$r = $result -> fetch_array(MYSQLI_ASSOC)['userid'];
$_SESSION['userid'] = $r;
}
}
我已经确定有时它的结果包含成功的布尔值,但我仍然不确定我到底做错了什么。
更新:
好的,bind_param 现在可以工作了,但是 fetch_assoc 一直给我错误“在非对象上调用成员函数 fetch_assoc()”,我什至测试了结果以确保它返回 true。
$mysqli = new MySQLi('localhost', 'root', '', 'prac2');
$query = $mysqli->prepare("SELECT * FROM user WHERE username=? and password=?");
echo $mysqli->error;
$query-> bind_param('ss', $username, $password);
if($query->execute()) {
$result = $query -> store_result();
if($result) {
while($row = $result -> fetch_assoc()){
echo $row['userid'];
$_SESSION['userid'] = $row['userid'];
}
}
}
【问题讨论】:
-
为什么是 bind_param ii?试试ss
-
@Aleksandar 正如我所提到的,我浏览了很多不同的文章,但在大多数情况下我很困惑。 'ss' 给了我同样的错误:“mysqli::query() 期望参数 1 是字符串”和“调用非对象上的成员函数 fetch_array()”
-
在非对象上调用成员函数 fetch_array(),当您的查询不好时发生,将 ii 更改为 ss,并检查您在 $username 和 $password 变量中得到了什么跨度>