Php mysqli fetch_assoc()未返回
我有一个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: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.
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_结果从未返回。。