MAMP:未定义的方法mysqli_stmt :: get_result()

时间:2014-05-26 13:10:58

标签: php mysql mamp

我使用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的方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:3)

检查你的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;
    }