因此,我正在使用本教程: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/

10-12 13:18
查看更多