如何将两个数据库表中的行放入同一个while循环中?

时间:2015-08-20 05:53:12

标签: php loops

我有一种感觉我以前做过这件事,但我无法记住它是如何完成的。到目前为止,这是while循环:

include ('includes/DbCon.php');
$dir = 'images/photo/';                
$query = "select * from news";
$result = $mysqli->query ($query);
echo "<table border='0' class='newsTable' style='width:70%;margin:0em auto;'>";
echo "<tr stlye='display:block;margin:0em auto;'><th>Date</th><th>Headline</th><th>Body</th><th>Image</th></tr>";

while ($row = $result->fetch_assoc())
{
echo "<tr><td>"; 
echo date('j/M/y', strtotime($row['newsDate']));
echo "</td><td>";
echo "<a href='newsItem.php?id=".$row['id']."'>".$row['headline']."</a>";
echo "</td><td>";
echo "<a href='newsItem.php?id=".$row['id']."'>" . $row['body'] . "</a>";
echo "</td><td>";
echo "<p><img src=".$dir.$row['image']." width='100' height='100' alt=''>  </p>";
echo "</td></tr>";
echo "<th colspan=\"4\"><hr width=\"90%\"></th>";
}
echo "</table>";
$mysqli->close();

我尝试制作select语句:

select * from news, reviews

但它只带来了评论表中的项目。

我尝试查找php手册但无法找到它。我必须为第二个表(评论)设置所有变量,不是吗?

1 个答案:

答案 0 :(得分:1)

您的查询是否正确

传递多个表名(逗号分隔)会带来所有表的数据,但是如果你的表有公共列那么很难识别它们

  

最佳方法是JOINHERE

除此之外,如果您使用逗号分隔方法,

然后看一个示例,如果您有两个表citystate

  • 传递列名而不是*,以便更快地执行查询

  • 使用表名

  • 分隔重复列和相同列
  

查询就像这样

 SELECT ct.city_name,ct.state_id,ct.is_capital,
        st.name,st.zoom,st.is_state, 
        ct.lat as ct_lat,st.lat as st_lat 
 FROM `city` as ct, 
      `state` as st

在您的情况下,它将类似于newsreview及其列名称

  

加入的例子

 SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
             ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)