通过PHP查询从mysql表打印值的最佳方法

时间:2010-03-13 09:43:45

标签: php mysql

在我的页面中,大多数情况下,我需要使用循环打印表中只有一个字段的值。例如:

 <?php

 for($i=1;$i<=mysql_num_rows($result);$i++)
 {
     echo $row['name'];
     $sql1="select industry from table_industry where profid='".$row['prof']."'";
     $result1=mysql_query($sql1);
     $row1=mysql_fetch_array($result1);
     echo $row1['industry']; ?>
 }
 ?>

例如,我在表中有5000+记录,上面的循环将执行5000+次。

从表industry中打印table_industry字段值的最佳方法是什么?

这是我上面编写的代码,还是有更快的执行方法?

4 个答案:

答案 0 :(得分:4)

  1. 避免循环遍历所有5000条记录。使用过滤或分页
  2. 更加避免嵌套查询。使用JOIN的力量。

答案 1 :(得分:4)

我最好的猜测是JOIN会帮助你。

使用join,您可以指示MySQL服务器组合不同的表并在单个查询中访问它们,例如:

SELECT
  table_prof.profid
, table_prof.name
, table_industry.industry 
FROM table_prof
JOIN table_industry USING ( profid )
ORDER BY table_prof.name ASC;

一般来说,循环查询数据库是一个非常糟糕的主意,应该避免,除非你确切知道为什么要这样做。在循环中查询很容易使数据库服务器瘫痪。

答案 2 :(得分:1)

使用JOIN

如果您只想在行业表中包含值,那么sql将

    SELECT 
     table_prof.profid 
    , table_prof.name 
    , table_industry.industry  
      FROM table_prof 
      JOIN table_industry USING ( profid ) 
      ORDER BY table_prof.name ASC;

如果你想要包含表 table_prof 中的所有值,那么sql将是

      SELECT 
     table_prof.profid 
    , table_prof.name 
    , table_industry.industry  
      FROM table_prof 
      LEFT JOIN table_industry USING ( profid ) 
      ORDER BY table_prof.name ASC;

我认为这会对你有帮助......

答案 3 :(得分:0)

为了遵循你的逻辑,我会选择所有信息将它加载到哈希中并迭代哈希,而不是杀死数据库。