我在mysql中有表place
,我希望在表trip_half_day
中获取照片字段以显示我的json脚本。
表place
看起来像this。
而trip_half_day
看起来像this。
我已尝试过以下代码:
<?php
include("connect.php");
$strSQL = "SELECT trip_id, b.photo AS trip1, c.photo AS trip2, d.photo AS trip3, e.photo AS trip4 , a.type
FROM trip_half_day a, place b, place c ,place d, place e
WHERE a.trip1 = b.place_id
AND a.trip2 = c.place_id
AND a.trip3 = d.place_id
AND a.trip4 = e.place_id
";
$objQuery = mysqli_query($connection,$strSQL);
$intNumField = mysqli_num_fields($objQuery);
$resultArray = array();
while($obResult = mysqli_fetch_array($objQuery))
{
$arrCol = array();
for($i=0;$i<$intNumField;$i++)
{
$arrCol[mysqli_fetch_field_direct($objQuery,$i)->name] = $obResult[$i];
}
array_push($resultArray,$arrCol);
}
mysqli_close($connection);
echo json_encode($resultArray);
得到这个:
但是,我想要的结果是:
我该如何解决?
答案 0 :(得分:1)
对于我所看到的,缺失的结果(id 5,6,7,8)不符合您要求的4个要求。您要求“空”或“空”值不匹配的4个条件。
尝试:
WHERE ((trip1 = b.place_id) or (isnull(trip1)))
AND ((trip2 = c.place_id) or (isnull(trip2)))
AND ((trip3 = d.place_id) or (isnull(trip3)))
AND ((trip4 = e.place_id) or (isnull(trip4)))
...如果它们是空的。但看到你的桌子,我认为trip1,trip2...
可能存储为文字?请检查一下。
请同时查看JOIN syntax。这将使您的代码更好,更清洁,更小,更快。