php - mysqli_fetchall($result, MYSQLI_ASSOC) 返回空值的关联数组
问题描述
我只是想从 MySQL 数据库中的表中获取数据,但在运行mysqli_fetch_all($result, MYSQLI_ASSOC);
返回后输出结果{"current_field":null, "field_count":null, "lengths":null, "num_rows":null, "type":null}
。我以前没有遇到过这个问题,因为我之前得到了正确的数据。其他会返回的查询,true
如 INSERT 和 UPDATE 工作正常,并且表中有记录。然而,我对 PHP 还很陌生,所以我可能会遗漏一些明显的东西。
<?php
include("APIBase.php");
//Get query from POST request
//$content = trim(file_get_contents("php://input"));
//$decoded = json_decode($content, true);
//$query = $decoded["apiData"];
if($_SERVER["REQUEST_METHOD"] == "GET"){
//exit("yeahhhh no");
$query = "SELECT * FROM `user_accounts`"; //this line for testing purposes
}
//connect to database
$conn = mysqli_connect("localhost", "id14495771_root", "Thereisnopa55word$", "id14495771_user_info");
$result = mysqli_query($conn, mysqli_escape_string($conn, $query));
//check result
if($result == false){
exit(APIResponse(true, mysqli_error($conn), array()));
}
else if($result == true){
$data = $result;
}
else {
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
}
//free and close connection
mysqli_free_result($result);
mysqli_close($conn);
//return data
$output = APIResponse(false, "", $data);
exit($output);
?>
APIBase.php:
<?php
header("Access-Control-Allow-Origin: *");
function APIResponse(bool $isError, $errorMessage = "", $data){
$output = array("isError" => $isError, "errorMessage" => $errorMessage, "data" => $data);
exit(json_encode($output));
}
?>
解决方案
在我的 else if 语句中,我使用 == 而不是 ===。所以在类型杂耍之后,$result==true
回来了。要解决此问题,只需将 == 替换为 === 以检查类型。
推荐阅读
- python - 将图像插入“Geany”编译器
- java - 使用 Java 的 XLSX 和 XAdES-T 数字签名
- java - Eclipse for Java 在运行带有参数的项目时给出控制台错误
- go - 如何使用 containerd 运行时以编程方式获取容器配置?
- node.js - 反应开发构建没有生成非缩小 js 文件
- ios - PJSIP IOS 视频通话窗口 ID 始终为 PJSUA_INVALID_ID
- c++ - 如何让这个程序运行4次没有结束
- javascript - 有没有修改节点包的标准方法?
- python - 如何使用 pandas 在 python 中读取两个 CSV 文件并将它们相互附加?
- google-bigquery - Apache Beam - 将大查询读取为通用记录(Avro 格式)