Php MySQLi查询准备和检索结果
我已经经历了相当多的stackoverflow线程,在准备查询之后,我根本无法正确地检索结果。我尝试了许多不同的解决方案,但在执行查询后,似乎没有一个能够获取关联数组Php MySQLi查询准备和检索结果,php,mysql,mysqli,Php,Mysql,Mysqli,我已经经历了相当多的stackoverflow线程,在准备查询之后,我根本无法正确地检索结果。我尝试了许多不同的解决方案,但在执行查询后,似乎没有一个能够获取关联数组 $mysqli = new MySQLi('localhost', 'root', '', 'prac2'); $query = $mysqli-> prepare("SELECT * FROM `user` WHERE username=? and password=?"); $query->
$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_参数现在可以工作了,但是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'];
}
}
}
用户名和密码是字符串,应该是
's'
,表示相应的变量具有字符串类型。我看不出用户名和密码是怎样的整数
在
bind_param
中,对于字符串,您应该使用s
。我的意思是尝试ss
而不是ii
为什么bind\u param ii?尝试ss@Aleksandar正如我所提到的,我读了很多不同的文章,在很大程度上我感到很困惑ss’给我同样的错误:“mysqli::query()期望参数1是字符串”和“调用非对象上的成员函数fetch_array()”调用非对象上的成员函数fetch_array(),在查询不好时发生,将ii更改为ss,并检查$username和$password中的内容variables@John罗伯逊:谢谢你,我不知道它代表整数。@ChrisCrossman很乐意帮忙。我知道你也会为别人做同样的事else@JohnRobertson很抱歉再次打扰,但它现在似乎几乎可以工作了,我用新的代码更新了这个问题,你有没有可能看一下?谢谢你advance@ChrisCrossman尝试使用$query->bind_result($username,$password);而不是束缚_param@ChrisCrossman我要注销了。希望这能帮助你。
$query-> bind_param('ss', $username, $password);