试图理解mysqli,需要一个数组,其中一列作为键,一列作为值

时间:2016-06-08 04:15:40

标签: php mysql arrays mysqli

好的,我的问题是我有一个包含帖子的表,每个帖子都有一个类别ID但不是类别名称。我有另一个类别ID的表与类别名称。所以我想循环播放帖子并回显类别名称。我在想我只是在while循环中放入另一个mysqli查询,所以

while($row_post = mysqli_fetch_array($result_post)){

query_post_cat = "SELECT category_name FROM categories WHERE category_id = " . $row_post["category_id"];
result_post_cat = mysqli_query($link, $query_post_cat);
$category_name = something here not sure

 echo $row_post["post_title"] . $category_name;
}

无法弄清楚去哪里。我想的另一种方法是在while循环之外做类别表,并以某种方式创建一个关联数组,其中cat id作为键,cat name作为值,只是echo

category_name[$row_post["category_id"]]
在while循环中

等。

除此之外,我很确定我使用mysqli的方式并不理想,当我看到其他人的代码时,似乎他们正在使用 - >对象操作员很多,我不知道它是什么或如何工作,无法找到任何信息。所以我很遗憾,你可以看到

谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

如果您使用连接运行查询,则可以立即从两个表中获取数据,如下所示:

SELECT post_table.*, categories.category_name FROM post_table INNER JOIN categories ON post_table.category_id = categories.category_id;

您可以在http://www.w3schools.com/sql/sql_join.asp

上查看更多相关信息

答案 1 :(得分:0)

您的代码应如下所示: -

while($row_post = mysqli_fetch_array($result_post)){
  // missed $ below line
  $query_post_cat = "SELECT category_name FROM categories WHERE category_id = {$row_post['category_id']}";
  $result_post_cat = mysqli_query($link, $query_post_cat);
  // use mysqli_fetch_row below
  $category_name = mysqli_fetch_row($result_post_cat));

  echo $row_post["post_title"] . $category_name;
}

更好的方法是在查询中使用mysql JOIN来一次性获取所需的记录。