为一个循环访问两个不同的表

时间:2015-05-20 11:28:51

标签: php html mysql mysqli

我有一个小问题,我无法弄清楚。

我必须在一个循环中从两个不同的表中提取数据。我之前从未这样做过,所以我不知道怎么做。我尝试了两个不同的查询。看起来像这样:

$query = "SELECT * FROM colors ";
$color_select = mysqli_query($connection, $query);

$second_query = "SELECT * FROM votes";
$vote_select = mysqli_query($connection, $second_query);

然后将它们放入循环中:

 while($row = mysqli_fetch_assoc($color_select) && $second_row = mysqli_fetch_assoc($vote_select))
{
 $color = $row['Colors'];
 $votes = $second_row['Votes'];
 echo "<tr><td>$color</td><td>$votes</td></tr>";
}

但那并没有奏效。我没想到它,只想尝试一下。 :)也许有经验的人可以帮助我。谢谢。

在一天结束时,我需要一个显示的表,它有两列,其中一列包含一个数据库表中的颜色名称,另一列包含多个投票。

根据要求:表格结构。

表:颜色只有一个字段颜色

表:投票有四个字段 city_id 城市颜色投票

******** EDIT ********************* ***************** 因此按照建议修复了查询,但仍然没有显示任何内容。

以下是编辑过的代码:

$query = "SELECT * FROM colors,votes WHERE colors.Colors=votes.Colors"; 
$color_votes_select = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($color_votes_select))
{ $color = $row['Colors']; 
  $votes = $row['Votes']; } 

4 个答案:

答案 0 :(得分:1)

如果表有关系。

在单个查询中尝试此操作。

SELECT
  `colors`.*,votes.*
FROM
  `colors`
INNER JOIN
  `votes` ON
  `votes`.colorId = `colors`.Id

答案 1 :(得分:0)

大多数imp *****你应该在表之间建立一些关系

否则解决方法

  1. 运行颜色查询,将其保存在ArrayA
  2. 运行查询投票,将其保存在ArrayB
  3. 创建新阵列ArrayC

    $ arrayC = array(); 如果它们都接触相同的行计数,则循环数组A或C. array_push($ ArrayC,键和颜色值,键和值的值);

  4. 最终循环ArrayC打印tr和td

答案 2 :(得分:0)

First Relate这两个表,在投票表中写出color_id。

$query = "SELECT * FROM colors,votes where colors.id=votes.color_id";

$color_select = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($color_select))

{

 $color = $row['Colors'];
 $votes = $row['Votes'];

}

答案 3 :(得分:0)

试试这个:

$query = "SELECT colors FROM colors"; 
$color_select = mysqli_query($connection, $query) or die (mysqli_error());

$second_query = "SELECT votes FROM votes"; //you only need column votes right?
$vote_select = mysqli_query($connection, $second_query) or die (mysqli_error());;

 while( $row = mysqli_fetch_assoc($color_select) && $second_row = mysqli_fetch_assoc($vote_select)){

  $color[] = $row['colors'];
 $votes[] = $second_row['votes'];
 echo "<tr><td>$color</td><td>$votes</td></tr>";
 }

简短说明: 它将获取select并存储到一个数组中(因为你正在做的是在一个变量中选择多行),然后只显示echo。