如何在我的AJAX代码中正确选择数据?

时间:2018-05-01 00:09:56

标签: php mysql sql

我在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);

得到这个:

this result

但是,我想要的结果是:

Destination result

我该如何解决?

1 个答案:

答案 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。这将使您的代码更好,更清洁,更小,更快。