Php mysqli fetch_assoc()未返回

Php mysqli fetch_assoc()未返回,php,mysqli,Php,Mysqli,我有一个Web服务,我用PHP在我的私有WAMP服务器上使用SLIM开发,在那里一切正常。将其部署到我的webhotel时,msqli fetch_assoc似乎永远不会返回,我得到一个“响应不包含任何数据”。我通过在fetch_assoc调用之前先放置和回显来确认它从未返回。。然后在电话之后。。当我把它放在fetch_assoc后面时,它从来没有击中我的回声 我的私有Web服务器运行PHP5.4.12和MySQL 5.6.12,而我的webhotel运行PHP5.3.28和MySQL 5.1.

我有一个Web服务,我用PHP在我的私有WAMP服务器上使用SLIM开发,在那里一切正常。将其部署到我的webhotel时,msqli fetch_assoc似乎永远不会返回,我得到一个“响应不包含任何数据”。我通过在fetch_assoc调用之前先放置和回显来确认它从未返回。。然后在电话之后。。当我把它放在fetch_assoc后面时,它从来没有击中我的回声

我的私有Web服务器运行PHP5.4.12和MySQL 5.6.12,而我的webhotel运行PHP5.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;
    }
}

Michael Berkowski亲切地为我指出了问题答案的方向

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

因此,我最终切换到PDO,这不需要对我的代码进行太多更改。

检查您的phpinfo()。我有mysqlnd,但只有PDO扩展。您可以通过查看mysqlnd部分下的API扩展(如果安装了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;
    }
}

新数据库是否有要检索的记录?是。。我从我自己的web服务器导出了数据库,并将其导入到我的web酒店。我还尝试了“旧”方法,使用mysql_fetch_assoc,它按预期工作…
$stmt->execute()
如果查询成功完成,包括没有实际返回行的情况,则为非false<代码>$user=$stmt->get_result()->fetch_assoc()假定查询至少返回一行。是吗?它会百分之百地这样做吗?我建议重新写这行代码,在尝试访问结果之前验证是否返回了任何结果。。。我对结果进行了实地考察。。这表明get_结果从未返回。。