首页 > 解决方案 > 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));
}

?>

标签: phpmysql

解决方案


在我的 else if 语句中,我使用 == 而不是 ===。所以在类型杂耍之后,$result==true回来了。要解决此问题,只需将 == 替换为 === 以检查类型。


推荐阅读