php - 如何显示mysql联合查询的结果

标签 php mysql sql

我在显示以下查询的结果时遇到问题:

$sql="SELECT CONCAT(threadID,'',memberID),'posts' as Type 
      from posts 
      where memberID=$userid 
      UNION 
      SELECT CONCAT(threadID,'',memberID),'replies',as Type 
      from replies 
      where memberID=$userid order by 1";

$result=mysqli_query($con,$sql);

while($row=mysqli_fetch_array($result)){ 
    $postid=$row['thread'];
    echo $postid; 
}

我得到的错误是

undefined index threadID" $postid=$row['threadID'];

最佳答案

问题是您的查询输出中没有名为“thread”的列...您没有输出该列,而是输出 CONCAT 函数的结果。

如果您在循环中编写 var_dump($row); 作为调试步骤,您将看到该行的实际外观。

解决此问题的一个简单方法是为计算列指定一个别名,以便它在 $row 变量中获得一个合理的名称。您可以使用 SQL 中的 AS 关键字来执行此操作。如果您只是将别名称为“thread”,那么您根本不必更改 PHP 代码:

SELECT CONCAT(threadID,'',memberID) AS thread,'posts' as Type 
from posts 
where memberID=$userid 
UNION 
SELECT CONCAT(threadID,'',memberID) AS thread,'replies',as Type 
from replies 
where memberID=$userid order by 1

关于php - 如何显示mysql联合查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622672/

相关文章:

php - 想要使用excel文件上传并插入200 000行数据

用于更快运行测试的 MySQL 配置

mysql - 有没有办法在 mysql docker 中创建模式和表,而无需为 mysql 构建新镜像?

sql - 如何在postgresql中将两个表合并为一个表

php - debugURIComponent(uri) 不起作用?

php - 如何从普通 SQL 中的 NOT EXISTS 转换为 DOCTRINE ORM

mysql - 请帮我形成合适的SQL

php - WHERE 语句 SQL 不起作用

php - PHP-无法连接到MySQL数据库

php - 在 mysql db 和 PHP 中 x 分钟后删除整行