UNION ALL 不回显附加文本[重复]
Posted
技术标签:
【中文标题】UNION ALL 不回显附加文本[重复]【英文标题】:UNION ALL does not echo out additional text [duplicate] 【发布时间】:2019-08-27 02:07:25 【问题描述】:这是我的代码:
<?php
$stmt = $pdo->prepare("
SELECT valueA, 'TEXT' AS valueAA FROM tableA
UNION ALL
SELECT valueB, 'TEXT2' FROM tableB;
");
$stmt->execute();
$points = $stmt->fetchAll();
foreach($rows as $row):
$valueA = htmlentities($row['valueA']);
$valueAVAR = number_format($valueA);
?>
<div><?php echo $valueAA . $valueAVAR; ?></div>
<?php endforeach; ?>
这是我得到的不想要的结果:
valueA
valueB
这是我想要的结果:
TEXTvalueA
TEXT2valueB
所以基本上,我的代码不会在valueA
和valueB
之前回显单词TEXT
,因为它应该基于我的SQL 语句。你能帮我重写我的代码,以便TEXT
可以得到回显吗?谢谢
编辑:tableA
的示例:
valAid (int11) | valueA (int11)
1 | 100
tableB
:
valBid (int11) | valueB (int11)
2 | 200
【问题讨论】:
为什么不在 php 中添加“TEXT”而不是查询?这是更合乎逻辑的方法 @tim 好的,我想我在我的问题中遗漏了一些东西。我编辑了这个问题,但是根据数据库中的值,它们是不同的单词。幸运的是 ChrisFNZ 解决了这个问题。 我仍然会在 php 中这样做,为此使用 db 是不合逻辑的。 @tim Hm.. 我没想到。我一定会听取您的建议并考虑重写我的代码。这是因为我曾尝试单独使用 php 进行文本渲染部分,但由于我使用 LEFT/INNER JOINS 导致复制所有行(不需要的结果),因此代码无法运行。所以有人建议使用 UNION ALL,它解决了这个问题。但我正在重新考虑仅使用 php 来解决问题。谢谢你的好建议 你能得到的最好的建议是退出这个联合的东西,只剩下一张桌子 【参考方案1】:如果您希望 SELECT UNION 起作用,那么您需要确保两行的列名(别名)相同。
所以而不是:
SELECT valueA, 'TEXT' AS valueAA FROM tableA
UNION ALL
SELECT valueB, 'TEXT' FROM tableB;
这会让你更接近你想要的吗?
SELECT valueA AS valFirst, 'TEXT' AS valSecond FROM tableA
UNION ALL
SELECT valueB AS valFirst, 'TEXT' AS valSecond FROM tableB;
【讨论】:
是的!你为我节省了很多时间!你的是我一直在寻找的解决方案 - 完全修复了我的代码。说真的,非常感谢! 不客气!我很高兴我的建议很有用。 哪怕是一点点帮助也能挽救一个人的生命!我永远感激这个社区的人们。即使在现实生活中,也没有人这么好来提供建议!【参考方案2】:我在写这篇文章的过程中看到了蒂姆的评论,这正是我要说的。在 PHP 而不是 SQL 中将字符串“TEXT”添加到您想要的信息中似乎要容易得多。这是一个例子:
echo "TEXT" . $valueAA . $valueAVAR;
【讨论】:
是的,但我重新编辑了我的问题,因为我错过了一些东西。 “TEXT”一词始终是不同的值,具体取决于它在数据库中的内容。但是 ChrisFNZ 解决了这个问题,也谢谢!【参考方案3】:您从未从查询中读取您的字段valueAA
。
<?php
...
foreach($rows as $row):
$valueA = htmlentities($row['valueA']);
$valueAVAR = number_format($valueA);
# read valueAA
$valueAA = htmlentities($row['valueAA']);
...
?>
<div><?php echo $valueAA . $valueAVAR; ?></div>
【讨论】:
@OliverDepriester 哦,哇,这也是解决方案。我不敢相信我完全错过了 valueAA 甚至没有作为一行回显。假设既然是编造出来的,就不需要呼应了。但是您在解释部分澄清了问题 - 谢谢! 太好了,因为我很惊讶@ChrisFNZ 的回答是解决方案,据我所知,UNION ALL 并不关心别名。所以我认为您的查询可能保持不变。以上是关于UNION ALL 不回显附加文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章