从 PHP 中检索 MYSQL 连接值

Posted

技术标签:

【中文标题】从 PHP 中检索 MYSQL 连接值【英文标题】:Retrieving MYSQL Join values from PHP 【发布时间】:2009-11-03 11:03:07 【问题描述】:

我有两个或多个表在同一列名下保存值。现在,当我加入这两个表时,列名保持不变。在 php ($row['name']) 中检索这些值时,我遇到了问题,因为列 'name' 被使用了两次。

是否有任何可能的方法来分隔查询中的这两列?

  SELECT *
    FROM stories s
    JOIN authors a ON a.id = s.authorid

表格故事 id、名称、内容、日期

作者 身份证、姓名、日期

当我加入这两个时,我会得到一个具有相似“名称”列的表。

有没有办法将两个表分开,所以作者表前面有一个前缀?例如。作者姓名 /authors_*

【问题讨论】:

【参考方案1】:

是的,以这种方式更改您的 SQL:

SELECT 
  s.Id as StoryId, 
  s.Name as StoryName,
  a.Id as AuthorId, 
  a.Name as AthorName,
FROM stories s
JOIN authors a ON a.id = s.authorid

然后在 php 中,使用 StoryId、StoryName、AuthorId 和 AthorName 而不是 Id 或 Name。

希望对你有帮助。

【讨论】:

谢谢,这应该可以解决问题,但是我希望我可以添加一个前缀,它会自动添加诸如 authors_* 之类的东西 不幸的是,它看起来没有自动前缀。如果这个答案没问题,别忘了“接受”它:p【参考方案2】:

是的!

SELECT *, stories.name AS s_name, authors.name AS a_name
FROM stories s
JOIN authors a ON a.id = s.authorid

你有它。所有字段加上两个额外的! ;)

希望对你有帮助。

【讨论】:

谢谢!我感谢您的所有回复。由于我是 SO 的新手,因此我会单独向所有人添加感谢信。【参考方案3】:

抱歉,您不能真正在字段级别添加前缀,但如果您可以调用 2 个查询,只需使用

SELECT s.*
FROM stories s
JOIN authors a ON a.id = s.authorid

结果集将仅包含故事字段,您可以像通常使用 php 一样使用这些字段。然后对作者再次执行相同的操作。

【讨论】:

以上是关于从 PHP 中检索 MYSQL 连接值的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)

从 php 中检索单选按钮的 mysql 值

使用连接(codeigniter)从单个字段中检索和打印逗号分隔符后的值

在读取初始通信数据包时失去与 MySQL 服务器的连接,系统错误:111

如何将android与php mysql连接[重复]

GraphQL 从 MySQL 连接查询返回 null