从 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)
使用连接(codeigniter)从单个字段中检索和打印逗号分隔符后的值