【问题标题】:error on array retrieved from JOIN query on two tables从两个表的 JOIN 查询中检索到的数组出错
【发布时间】:2014-08-06 20:38:05
【问题描述】:

希望我的标题是明确的。我正在尝试从两个表中检索结果。 所以我想要名为“专辑”的表中的所有内容(因此 *)。 我只想要来自表“贡献者”的所有匹配(带有专辑 ID)的结果。

$result = mysql_query("SELECT * FROM albums LEFT JOIN contributors ON albums.album_id = 
contributors.album_id ORDER BY albums.datum DESC; ") or die(mysql_error());

$aantal_rijen = mysql_num_rows($result);

if ($aantal_rijen > 0) {

for ($i = 0; $i < $aantal_rijen; $i++){


$contributors[] = mysql_result($result, $i, 'contributors');}

但我得到了类似错误的列表:

在 MySQL 结果索引中找不到贡献者 ...

加入两个表对我来说是全新的,也许这不是要走的路,但也许这只是这段代码中的一个简单的错误,无论如何,我被困在这里,

欢迎所有帮助 谢谢S

【问题讨论】:

  • 将返回哪些行?您很可能需要使用 albums.contributor 之类的东西 - 或者在查询中使用别名并选择它
  • $aantal_rijen 中有什么内容?
  • @kingkero,从表格相册中返回每一行,但我跳过了那部分,因为它工作正常。从表贡献者中,应该只返回行'贡献者'。我试图把它放在contributors.contributors,但这没有区别
  • @Ronak Patel,这只是为了定义专辑中的行数,所以我可以循环遍历它们......这里发生了什么愚蠢或不明显的事情?
  • 所以表contributors有一个列contributors(抱歉说上面的行)?

标签: php arrays join


【解决方案1】:

http://php.net/manual/en/function.mysql-result.php

字段

正在检索的字段的名称或偏移量。

可以是字段的偏移量,字段的名称,或者字段的表格点字段 名称(表名.字段名)。如果列名有 被别名('select foo as bar from...'),使用别名而不是 列名。如果未定义,则检索第一个字段。

您只是使用表名贡献者,因此您需要指定单个字段或将选择限制为仅您想要的字段

$contributors[] = mysql_result($result, $i, 'contributors.name');

$result = mysql_query("
    SELECT contributors.* 
    FROM albums 
    LEFT JOIN contributors ON albums.album_id = contributors.album_id 
    ORDER BY albums.datum DESC; 
") or die(mysql_error());

【讨论】:

  • hmm,contributors 也是表contributors 中的一列,显然不是很好命名,但这样我实际上是在选择一个名称,而不是一个表..
  • 你应该可以做contributors.contributors $contributors[] = mysql_result($result, $i, 'contributors.contributors');
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多