如何解决在 php 中使用 while 循环不显示任何数据的问题

How to fix not showing any data using while loop in php

我是 PHP 和 MYSQL 的新手,我正在尝试获取数据库中状态列中尚未更新(或接收)的所有行。

此代码片段在获取单行值时非常有效。尝试在代码中插入 while 循环时。使用 echo 时显示空白响应。

保存时没有显示错误消息,甚至在编辑器中显示 "x"。使用浏览器调用和测试 url 时只是一个空白屏幕。我在 Hostinger 中为我的 php 文件和 mysql 数据库使用文件管理器。

// array for JSON response
$response = array();

try {
    $sql = "SELECT * FROM Complaints where status=''";

    if (mysqli_query($conn, $sql)) {
        if (mysqli_num_rows(mysqli_query($conn, $sql)) > 0) {
            $response["success"] = 1;
            $response["message"] = "Request successfully created.";

            $row = mysqli_fetch_array(mysqli_query($conn, $sql));

            $photo = $row['id'];
            $name = $row['name'];
            $sin = $row['sin'];
            $cp_no = $row['cp_no'];
            $complaint = $row['complaint'];
            $landmark = $row['landmark'];

            $response["success"] = 1;
            $response["name"] = $name;
            $response["id"] = $photo;
            $response["sin"] = $sin;
            $response["cp_no"] = $cp_no;
            $response["complaint"] = $complaint;
            $response["landmark"] = $landmark;
        } else {
            //no items found
            $response["success"] = 0;
            $response["message"] = "No items found.";
        }

        echo json_encode($response);
        mysqli_close($conn);
    } else {
        //failed to fetch
        $response["success"] = 0;
        $response["message"] = "Oops! an Error occured.";

        //echoing JSON response
        echo json_encode($response);
    }
    mysqli_close($conn);
} catch (Exception $e) {
    echo "exception";
    // failed to fetch
    $response["success"] = 0;
    $response["message"] = 'message: ' . $e->getMessage();

    // echoing JSON response
    echo json_encode($response);
}

这是我目前尝试过的代码

while ($row = mysqli_fetch_array(mysqli_query($conn, $sql))) {
    $photo = $row['id'];
    $name = $row['name'];

    $response["names"] = $name;
    $response["data"] = $photo;

    // $response[$i]=$row;
}

然后将从数据库中获取的数据转换为 json 格式。

hich 将在 VB.net 上被解析 此代码也适用于单行值

VB.NET 代码

    Dim request As HttpWebRequest
    Dim response As HttpWebResponse = Nothing
    Dim reader As StreamReader

    request = DirectCast(WebRequest.Create("http://u969542451.hostingerapp.com/Get_Data.php"), HttpWebRequest)

    response = DirectCast(request.GetResponse(), HttpWebResponse)
    reader = New StreamReader(response.GetResponseStream())

    Dim rawresp As String
    rawresp = reader.ReadToEnd()
    TextBox2.Text = rawresp.ToString
    MsgBox(rawresp.ToString)

    Dim jsonResulttodict = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(rawresp)
    Dim dataItem = jsonResulttodict.Item("id")
    Dim nameItem = jsonResulttodict.Item("name")
    Dim SINItem = jsonResulttodict.Item("sin")
    Dim cpItem = jsonResulttodict.Item("cp_no")
    Dim compItem = jsonResulttodict.Item("complaint")
    Dim LMItem = jsonResulttodict.Item("landmark")
    Dim typeItem = "COMPLAINT"

    dgvSearch.Rows.Add(SINItem, nameItem, dataItem, cpItem, compItem, LMItem, typeItem)

你能试试这样吗

try {
    $response = array();
    $i=0;
    $sql = "SELECT * FROM Complaints where status=''";
    $data = mysqli_query($conn, $sql)
    if (mysqli_num_rows($data) > 0) {
        while ($row = mysqli_fetch_array($data)) {
            $photo = $row['id'];
            $name = $row['name'];

            $response[$i]["names"] = $name;
            $response[$i]["data"] = $photo;
            $i++;
        }
    }
}