在我的页面中,大多数情况下,我需要使用循环打印表中只有一个字段的值。例如:
<?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
字段值的最佳方法是什么?
这是我上面编写的代码,还是有更快的执行方法?
答案 0 :(得分:4)
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)
为了遵循你的逻辑,我会选择所有信息将它加载到哈希中并迭代哈希,而不是杀死数据库。