因此,我正在使用本教程:https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/尝试从本地MYSQL服务器(使用Wamp64)获取数据。一开始我有未定义的索引错误,我使用isset()语句修复了该错误。
但是现在它只是返回:
{"result":[]}
但是,该数据库的set列中有很多数据。
这是代码:
<?php
//Getting the requested klas
$klas = isset($_GET['klas']) ? $_GET['klas'] : '';
//Importing database
require_once('dbConnect.php');
//Creating SQL query with where clause to get a specific klas
$sql = "SELECT * FROM lessen WHERE klas='$klas'";
//Getting result
$r = mysqli_query($con,$sql);
//Pushing result to an array
$result = array();
while ($row = mysqli_fetch_array($r)) {
array_push($result,array(
"id"=>$row['id'],
"klas"=>$row['klas'],
"dag"=>$row['dag'],
"lesuur"=>$row['lesuur'],
"les"=>$row['les'],
"lokaal"=>$row['lokaal']
));
}
//Displaying the array in JSON format
echo json_encode(array('result'=>$result));
mysqli_close($con);
?>
我尝试了
SELECT * FROM lessen WHERE klas='$klas'
我的数据库中的语句,它似乎返回正确的数据。
知道是什么原因造成的吗?
提前致谢!
最佳答案
第一点是:isset
函数仅检查klas
全局数组中是否设置了$_GET
。因此,如果$klas
是空白的-您的查询将返回空(不给出错误)。
因此,请检查$_GET
中的值以及可能从其访问的位置。或者,您可以添加条件以避免出现空查询,例如-
if (!empty($_GET['klas'])) {
// rest of the code block upto return
第二点是:
您已经提到过如果回显它返回的SQL
SELECT * FROM lessen WHERE klas=''{"result":[]}
这里的第二部分(JSON)来自在代码末尾回显结果。因此,对于第一部分(即回显
$sql
),我们看到了klas=''
。如上所述,这实际上到达了Point 1。所以最后您必须检查为什么
$_GET
的值显示为空白。那将解决您的问题。更新:
来自@GeeSplit的评论对于请求
"GET /JSON-parsing/getKlas.php?=3ECA"
$_GET['klas']
中将没有任何内容,因为url中的查询字符串不包含任何键。因此,您要么必须更改调用文件的源。或者,您可以更改获取
klas
值的方式。例:
$tmpKlas = $_SERVER['QUERY_STRING'];
$klas = ltrim($tmpKlas, '=');
您的其余代码将正常工作。
关于php - 使用PHP从MYSQL获取数据没有结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36446835/