PHP查询循环中的第三个表

时间:2015-10-12 11:16:33

标签: php mysql

我有3张桌子。一个用于我的餐馆(cc_restaurants),一个用于餐馆的工作时间(cc_workhours),第三个用于餐馆的一种烹饪(cc_cuisines) 正如您在下面所见,我已经根据共同列向我的餐馆分配了一个工作小时。这是有效的,因为cc_workinghours中的每一行只分配给一个餐馆:

$sql = "
    SELECT * FROM cc_restaurants r 
    JOIN cc_workhours w ON r.rest_id = w.time_asoc  
    WHERE r.rest_loc='hk'
";
$stmt = $conn->query($sql);

 if($stmt->rowCount() > 0) {
    while($row = $stmt->fetch()) {
        //some code
    }
} else {
    echo "0 results";
}

但是现在我需要查询第三个表(cc_cuisines)...在cc_restaurants我有一个名为rest_cuisine的列(这些数据的摘要你可以在{{1}中看到它函数)...所以在那之后我想在第三个表(cc_cuisines)中查询所有菜肴与餐厅表中explode列中的代码相关...这就是为什么我写下面的代码....

rest_cuisine

最后,我需要在第一个循环中进行第二个循环,并将相应的美食分配到相应的餐厅......

关于我该怎么办?

1 个答案:

答案 0 :(得分:1)

大多数数据库引擎都可以让您执行多个查询!如果由于某种原因,你不能,那么:运行第一个查询;缓存数组中的行;然后循环执行该操作以运行第三个查询。

<?php
    $sql = "
        SELECT * FROM cc_restaurants r 
        JOIN cc_workhours w ON r.rest_id = w.time_asoc  
        WHERE r.rest_loc='hk'
    ";
    $stmt = $conn->query($sql);

    $aAllRows = array();    /*****   Create Array */
    if($stmt->rowCount() > 0) {
        while($row = $stmt->fetch()) {
            $aAllRows[] = $row;  /**** Cache row in array */
        }
    }
    foreach ($aAllRows as $row){    /****** Loop through array */
        //QUERY A THIRD TABLE HERE
        $cuisines = implode('","' , explode('/','hk-01/hk-06'));
        $sql_cuisine = 'SELECT * FROM cc_cuisines WHERE cuisine_asoc IN ("'. $cuisines .'")';
        $result_cuisine = $conn->query($sql_cuisine);
        while( $row2 = $result_cuisine->fetch()) {
            echo $row2['cuisine_name'];
        }

        echo RESULT FIRST QUERY. '/'. RESULT SECOND QUERY
    }

} else {
    echo "0 results";
}
?>

正如一些评论所说,数据库之间存在差异。我认为这引起了一些混乱。