mysqli fetch_assoc()没有返回

时间:2014-03-19 21:31:48

标签: php mysqli

我有一个web服务,我在我的私人WAMP服务器上使用SLIM在PHP中开发,一切正常。当将它部署到我的webhotel时,msqli fetch_assoc似乎永远不会返回,我得到一个"响应不包含任何数据。"我确认它在fetch_assoc调用之前第一次put和echo之后就没有返回..然后在调用之后......并且在fetch_assoc之后放置时它从未点击我的echo。

我的私人网络服务器运行PHP 5.4.12和MySQL 5.6.12,而我的webhotel运行PHP 5.3.28和MYSQL 5.1.71。

我的网站主机是否需要升级他们的mysql服务器,因为我已经了解到这在某些mysql服务器版本中存在问题?

迫切需要帮助......谢谢

编辑1:

public function getUserByEmail($email) {

    $stmt = $this->conn->prepare("SELECT name, email, api_key, status, created_at FROM user WHERE email = ?");

    $stmt->bind_param("s", $email);
    if ($stmt->execute()) {     

    //$user = $stmt->fetchAll(PDO::FETCH_ASSOC);  echo "afas";  
        $user = $stmt->get_result()->fetch_assoc();
        $stmt->close();
        return $user; 
    } else {
        return NULL;
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

public function getUserByEmail($email) {
    $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;
    }
}

答案 1 :(得分:0)

迈克尔·伯科斯基(Michael Berkowski)向我指出了解决问题的方向。

“get_result()仅在某些拥有mysqlnd驱动程序的系统上可用。”

所以我最终切换到PDO,这不需要对我的代码进行大量更改。