为什么JSON不显示数据

时间:2019-07-06 00:50:22

标签: php arrays json

使用some.php?id=$id

时出错

我有一个名为tb_syarat_layanan的表。当我尝试获取JSON时,数组未显示任何数据。

<?php

 //Importing database
 require_once('koneksi.php');

 $query = "select * from tb_syarat_layanan WHERE id_layan=$id";
 $hasil = mysqli_query($con,$query);

 if(mysqli_num_rows($hasil) > 0 )
 {
     $response = array();
     $response["data"] = array();
     while($x = mysqli_fetch_array($hasil)) 
     {
         $h['id_layan'] = $x["id_layan"];     
         $h['dokumen'] = $x["dokumen"];
         array_push($response["data"], $h);
     }
     echo json_encode($response);
 }
 else 
 {
     $response["message"] = "No Data";
     echo json_encode($response);
 }

?>

但是当我这样设置$ query时:

$query = "select * from tb_syarat_layanan WHERE id_layan=1";

它显示我想要的数据

当使用变量$id设置$ query时,JSON不显示数据

2 个答案:

答案 0 :(得分:2)

问题在于您如何从URL获取ID。通过查询字符串发送的数据存储在$_GET

内部
$id = $_GET['id'];
$query = "SELECT * FROM tb_syarat_layanan WHERE id_layan = $id";

答案 1 :(得分:1)

假设您的URL中有some.php?id = 1。您需要一种从查询字符串获取该id参数的方法。在PHP中,可以使用$_GET超全局变量轻松完成此操作。 $_GET允许您访问查询字符串中传递的值。

因此,在您的代码中,您可以执行以下操作:

  $id = $_GET['id'];

最佳做法是转义查询字符串中传递的所有输入:

 $id = htmlspecialchars($_GET['id']);

但是,如果您没有在页面上任何可以执行的地方输出该输入,并且以后也不存储查询参数以供输出,那么这应该不是问题。唯一真正的危险是SQL注入。避免这种情况的最佳方法是使用准备好的语句。参见https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php