如何解决在 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++;
}
}
}
我是 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++;
}
}
}