我需要循环两个不同的表并从所有列中获取值。
我试着用工会来解决我的问题。
代码如下所示:
if(isset($_GET['country'])){
$sql = "SELECT name, capital, population,description,null FROM countries WHERE name ='France'
UNION ALL
SELECT null,null,null,null,attraction_name FROM attraction_list WHERE country_name='France'
";
mysqli_select_db($conn,'travelapp') or die("database not found");
$result = mysqli_query($conn,$sql);
if($result){
$countryName;$capital;$population;$description;$attraction;
while($row = $result->fetch_row()){
$countryName=$row[0];
$capital=$row[1];
$population=$row[2];
$description=$row[3];
$attraction=$row[4];
}
$resultArray = array(
'country'=>$countryName,
'capital'=>$capital,
'population'=>$population,
'description'=>$description,
'attraction'=>$attraction
);
echo json_encode($resultArray);
}
}
但是,这段代码并不像我预期的那样工作。我想打印出来
名称、资本、人口、国家表中的描述和景点列表表中的景点名称。
所以我预期的输出应该是这样的:
{“国家”:法国,“首都”:巴黎,“人口”:64750000,“描述”:一些文字,“景点”:拉维耶·查理特}
但是我的php现在打印出什么:
while循环有问题吗?或者也许有比联合更好的解决方案?
1条答案
按热度按时间7qhs6swi1#
你真正想要的是
LEFT JOIN
. 使用LEFT JOIN
以防有没有景点的国家。试试这个:如果一个国家有多个景点,这个查询会给你多行。
如果你只想要一排,例如。
你可以用
GROUP BY
聚集。