JSON:查询联接表不工作(Cordova Mobile)

JSON: query join table not working (Cordova Mobile)

本文关键字:工作 Cordova Mobile 查询 JSON      更新时间:2023-09-26

我有两个查询,其结果将在JSON中使用。第一个查询是

$query = "SELECT * 
            FROM info_lokasi 
           WHERE id_lokasi=".$id."";

和第二个查询

$query = "SELECT t1.id_lokasi,t1.jalan,t1.lat,t1.lng,t1.nama,t2.kapasitas,t2.kegiatan,t2.parkir,t2.pengurus
            FROM info_lokasi t1 
      INNER JOIN detail t2 ON t1.id_lokasi=t2.id_lokasi
           WHERE t1.id_lokasi 
             AND t2.id_lokasi=".$id."";

当我使用第一个查询时,得到的结果是

[
{
"id_lokasi": "3",
"nama": "masjid",
"jalan": "surabaya",
"lat": "-7.292958471571183",
"lng": "112.71161556243896",
"username": "ope",
"jenis": "masijd"
}
]

但是,当我使用第二个查询时,我没有得到结果。为什么?

这是我的代码:

PHP

<?php 
    include "db.php";
    header("Content-type: text/javascript");
    if (isset($_POST['detail'])) {
    $id = $_POST['id'];
    $query = "SELECT t1.id_lokasi,t1.jalan,t1.lat,t1.lng,t1.nama,t2.kapasitas,t2.kegiatan,t2.parkir,t2.pengurus FROM info_lokasi t1 INNER JOIN detail t2 ON t1.id_lokasi=t2.id_lokasi WHERE t1.id_lokasi AND t2.id_lokasi=".$id."";
    //$query = "SELECT * FROM info_lokasi WHERE id_lokasi=".$id."";
    $data = $con->query($query);
    $results = array();
    while ($r = mysqli_fetch_array($data,MYSQL_ASSOC)) {
        # code...
        $results[] = $r;
    }
    echo json_encode($results);
    }
    mysqli_close($con);
?>

Javascript

function detail(idlokasi){
    var id = idlokasi;
    var datastring = "id="+id+"&detail=";
            $.ajax({
                type: "POST",
                url: "http://localhost:8080/maps-api/detail.php",
                data: datastring,
                crossDomain: true,
                cache: false,
                datatype: "JSON",
                success: function(data){
                    alert("DATA: "+data);                
                } 
            });
}

感谢

没有得到任何输出的原因可能是:

  1. 查询确实不返回任何数据(即:没有与WHERE条件匹配的行)
  2. 您的SQL出现错误

正如您所期望的那样,它会返回数据,我假设这是情况2。

您的查询是:

      SELECT t1.id_lokasi,t1.jalan,t1.lat,t1.lng,t1.nama,t2.kapasitas,t2.kegiatan,t2.parkir,t2.pengurus
        FROM info_lokasi t1 
  INNER JOIN detail t2 ON t1.id_lokasi=t2.id_lokasi
       WHERE t1.id_lokasi 
         AND t2.id_lokasi=$id

要检测错误,您应该使用以下PHP代码:

$query = "SELECT t1.id_lokasi,t1.jalan,t1.lat,t1.lng,t1.nama,t2.kapasitas,t2.kegiatan,t2.parkir,t2.pengurus
        FROM info_lokasi t1 
  INNER JOIN detail t2 ON t1.id_lokasi=t2.id_lokasi
       WHERE t1.id_lokasi 
         AND t2.id_lokasi=$id";
$data = $con->query($query);
if ($con->error)
{
    echo "ERROR: {$con->error}";
    throw new Exception($con->error);
}

注意:不要使用$_POST['id']作为参数,因为它可能会导致SQL injection问题。您应该更好地使用查询参数。