[英]How can I solve an problem with two select statements in one query
我想用php
语言用sql
检索og
标签,但我只能看到 1 个结果,这是他阅读的第一个结果,另一个我在页面源代码中看不到。
这是php
的代码。
$query = "SELECT metatitle FROM isacontent_content WHERE contentid = 12245
UNION ALL
SELECT name FROM isacontent_module_anchorimage WHERE contentid = 12245";
$resimage = $conn->query($query);
if(is_array($resimage)){
foreach ($resimage as $resItem){
$metaData[] = $resItem->fetch_assoc();
}
}else{
$metaData[] = $resimage->fetch_assoc();
}
$title = $metaData[0]["metatitle"];
$image = $metaData[0]["name"];
我希望这两个 select 语句都可以工作,我可以在元标记中看到这两个内容
对于UNION ALL
,您的列名必须相同,或者您可以为此使用ALIAS
。
但是,在您的示例中,您可以简单地使用INNER JOIN
通过使用 1 个单个查询从 2 个表中获取这两个值。
例子:
SELECT ic.metatitle, im.name FROM isacontent_content ic
INNER JOIN isacontent_module_anchorimage im ON im.contentid = ic.contentid
WHERE ic.contentid = 12245
使用INNER JOIN
因为你的两个表都有关系,所以你可以简单地使用INNER JOIN
边注:
如果您知道,您的查询将返回 1 行,那么为什么要在此处将数据存储到数组中$metaData[]
? 您可以简单地将$title
和$image
存储在foreach()
循环中。
当您使用联合时,您的列数必须相同,因为它将结合两个查询的结果。 在您的情况下,您要求存储在多个表中的特定内容结果,因此您可以 go 进行连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.