我有两个查询,其结果将在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);
}
});
}
感谢
没有得到任何输出的原因可能是:
- 查询确实不返回任何数据(即:没有与
WHERE
条件匹配的行) - 您的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
问题。您应该更好地使用查询参数。