使用 PHP 从 MYSQL 获取数据 returns 无结果

Get data from MYSQL using PHP returns no results

所以我正在使用本教程:https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/ 尝试从我的本地 MYSQL 服务器(使用 Wamp64)获取数据。一开始我有未定义的索引错误,我使用 isset() 语句修复了它。 但现在它只是 returns:

{"result":[]}

但是,我在那个数据库的集合列中有很多数据。 这是代码:

<?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'

我的数据库中的语句似乎 return 正确的数据。 知道是什么原因造成的吗?

提前致谢!

使用此代码

<?php
$klas ='';
if(isset($_GET['klas']) && !empty($_GET['klas']))
{
    $klas = $_GET['klas'];
    require_once('dbConnect.php');
    $sql = 'SELECT * FROM lessen WHERE klas="'.$klas.'"';
    $r = mysqli_query($con,$sql);
    $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']
        ));
    }
    echo json_encode(array('result'=>$result));
    mysqli_close($con);
}
?>

点 1 是:

isset 函数只检查 klas 是否在 $_GET 全局数组中设置。因此,如果 $klas 以某种方式为空 - 您的查询将 return 为空( 不会给出错误 )。

所以请检查 $_GET 中的值,并可能从访问它的地方检查。或者您可以添加条件以避免像 --

这样的空查询
if (!empty($_GET['klas'])) {
// rest of the code block upto return

点 2 是:

你提到如果你回显 sql 它 returns

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, '=');

您的其余代码将起作用。