2015-05-20 31 views
1

我有一个小问题,我无法弄清楚。访问一个循环的两个不同的表格

我必须在一个循环中从两个不同的表中提取数据。我从来没有这样做过,所以我不知道如何。我尝试了两个不同的查询。这是这样的:

$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颜色投票

********************* ****编辑************************************** 因此,修正查询为建议,但仍然没有显示。

这里是编辑的代码:

$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']; } 
+0

这两张表是如何相关的? –

+1

如果'color'表与'votes'有关系使用加入 –

+0

@AhhikChakraborty它们在同一个数据库中 – TacoCat

回答

1

如果具有表关系。

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

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

与1-2-1或1-2-m的关系 –

+0

好的,但在那种情况下,while循环如何改变? – TacoCat

+0

你的结果将在单个查询中产生 –

0

大多数小鬼*****你应该有,表

之间的一些关系,否则解决办法颜色

  1. 运行查询其保存在ArrayA
  2. 运行查询上投票,将其保存在ArrayB中
  3. 创建新阵列阵列C

    $ arrayC = array(); 环路阵列A或C,如果它们都接触同一行计数 array_push($ ArrayC,键和的颜色,键和票的价值值);

  4. 决赛圈ArrayC打印TR和TD
0

一是相关这两个表,写票台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']; 

}

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>"; 
} 

简短说明: 将取回选择和存储到一个数组(因为你在做什么将多个行选择到一个变量中),然后使用回显进行显示。

+0

我不想将值存储到变量中。如果是这样,你的榜样会有所帮助。 我只需要回应他们。 :) – TacoCat

+0

你试过了吗?因为最好让它们全部用于以后使用(在这种情况下为echo)。然后不工作? 顺便说一句,它应该显示每列的所有颜色和投票,无论它们是否相关。这可以通过查询来改变。 – Nighthunter22

相关问题