我有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
最后,我需要在第一个循环中进行第二个循环,并将相应的美食分配到相应的餐厅......
关于我该怎么办?
答案 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";
}
?>
正如一些评论所说,表和数据库之间存在差异。我认为这引起了一些混乱。