【问题标题】:MySQLi Query prepare and retrieving resultsMySQLi 查询准备和检索结果
【发布时间】: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 变量中得到了什么跨度>

标签: php mysql mysqli


【解决方案1】:

用户名和密码都是字符串,应该是's',表示对应的变量是字符串类型。我看不到用户名和密码是整数。 Bind Param Types

   $query-> bind_param('ss', $username, $password);

【讨论】:

  • @John Robertson 谢谢我不知道它代表整数。
  • @ChrisCrossman 很高兴为您提供帮助。我知道你会为别人做同样的事情
  • @JohnRobertson 很抱歉再次打扰,但它似乎现在几乎可以工作了,我用新代码更新了这个问题,你有机会看看吗?提前致谢
  • @ChrisCrossman 尝试使用 $query->bind_result($username, $password);而不是 bind_param
  • @ChrisCrossman 我要退出了。 stackoverflow.com/questions/12769982/…希望对你有帮助。
【解决方案2】:

bind_param 中,您应该使用s 来表示字符串。我的意思是尝试ss 而不是ii

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多