【问题标题】:MAMP: Undefined method mysqli_stmt::get_result()MAMP:未定义的方法 mysqli_stmt::get_result()
【发布时间】:2014-05-26 13:10:58
【问题描述】:

我对使用 PHP 和 MySQL 比较陌生,并且在使用以下代码时遇到了麻烦。

$stmt = $this->conn->prepare("SELECT * FROM users WHERE user_name = ?");
            $stmt->bind_param("s", $username);
            if ($stmt->execute()) {
                $user = $stmt->get_result()->fetch_assoc();
                $stmt->close();
                return $user;
            }

错误: 调用未定义的方法 mysqli_stmt::get_result() 可能是由于 MAMP 不支持 mysqlnd 而在运行此脚本时产生的。我试图弄清楚如何将本机驱动程序安装到 MAMP,但它看起来不太可能 - (我已提交错误报告并建议其他 MAMP 用户也这样做)。

下面这行似乎是问题所在:

 $user = $stmt->get_result()->fetch_assoc();

谁能提出一种产生相同结果但没有mysqlnd 的替代方法?

非常感谢。

【问题讨论】:

    标签: php mysql mamp


    【解决方案1】:

    检查你的 phpinfo()。我有 mysqlnd,但只有 PDO 扩展。您可以通过查看 mysqlnd 部分下的 API Extensions 来判断(如果安装了 mysqlnd)。

    这对我有用,而不是在 PDO 中重写所有内容:

    $stmt = $this->conn->prepare("SELECT name, email, api_key, status, created_at FROM users WHERE email = ?");
        $stmt->bind_param("s", $email);
        if ($stmt->execute()) {
            $stmt->bind_result($name, $email, $api_key, $status, $created_at);
    
            /* fetch values */
            mysqli_stmt_fetch($stmt);
    
            /* set values */
            $user['name'] = $name;
            $user['email'] = $email;
            $user['api_key'] = $api_key;
            $user['created_at'] = $created_at;
    
            $stmt->close();
            return $user;
        } else {
            return NULL;
        }
    

    【讨论】:

    • 这就是我最终解决问题的方法,我忘了在这个问题中添加代码。感谢您的回复
    猜你喜欢
    • 2016-06-24
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2014-01-09
    相关资源
    最近更新 更多