Php 从两个单独的表联接ID和名称

Php 从两个单独的表联接ID和名称,php,mysql,mysqli,Php,Mysql,Mysqli,我有两张桌子 Table 1 (keywordsTbl) KeyID Key_Name ================================ 1 Biology 2 Entertainment Table 2 (profileTbl) Keyword_ID Key_Name ================================ 1(from keywor

我有两张桌子

Table 1 (keywordsTbl)
KeyID               Key_Name
================================
1                   Biology
2                   Entertainment

Table 2 (profileTbl)
Keyword_ID          Key_Name
================================
1(from keywordsTbl) Biology(from keywordsTbl)
2(from keywordsTbl) Entertainment(from keywordsTbl)
我在profileTbl中的查询是从keywordsTbl索引KeyID,并且工作正常。唯一的问题是我的输出显示为没有数组

似乎它只索引了第一个keyID。。。即使行中放置了多个keyID,结果也只显示一个关键字:

我的问题如下:

include 'db.php'; 

   $sql = mysqli_query($con,"SELECT * FROM profileTable, addKeywordTable ORDER BY LaName ASC");


while ($row = mysqli_fetch_array($sql))
{

     $fname = $row['FirName'];
     $lname = $row['LaName'];
     $title = $row['Title'];
     $keys = $row['Keyword_Name'];
     $id = $row['source_ID'];

if(!in_array($title,array('',null)) && !empty($title)):
 $title = '('.$title.')';
 else:
 $title = '';
endif;

当使用两个表时,显示数组的最简单方法是什么?在这种情况下,联接是否更有效?

我不能100%确定这是您所要求的,但如果您想要基于KeyID联接的结果列表,可以执行以下操作:

SELECT p.Laname, p.FiName, GROUP_CONCAT(k.Key_Name)
FROM ProfileTable AS p
JOIN addKeywordTable AS k ON k.KeyID = p.Keyword_ID
GROUP BY p.LaName, p.FiName

如果你想在选择列表中包含更多的文件,你需要将它们添加到分组列表中,或者在选择列表中对它们使用聚合函数GROUP_CONCAT、MAX、MIN等。

我无法了解数据库的实际外观,但我可以告诉你,就MySQL而言,[17,18,40]不是一个数组,那是一根绳子。如果您可以为涉及的表发布SHOW CREATE,这将澄清问题。同意-我不认为您的外键存储在列关键字_ID内的字符串数组中-这是您正在做出的选择吗,如果是,你能用适当的关系方法来撤销这个错误吗?你在评论中写道:我没有收到这个错误。相反,我收到的是keyID,而不是关键字_Name。。。这是我的问题!::如果你给你的$row['Keyword_Name'];一个错误的名字,这很正常。应该是$keys=$row['Key_Name'];张贴你正在做的事情和你的错误是什么?不是对你问题的评论-关键字_ID是ID的字符串列表吗?@Matthew。。。我没有收到这个错误。相反,我收到的是keyID,而不是关键字_Name。。。这是我的问题@MizAkita可能会提供您的设置的SQLFiddle和一些示例数据,我将帮助您获得正确的设置: