Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi查询准备和检索结果_Php_Mysql_Mysqli - Fatal编程技术网

Php MySQLi查询准备和检索结果

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->

我已经经历了相当多的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_参数现在可以工作了,但是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);