簡體   English   中英

通過PHP查詢從mysql表打印值的最佳方法

[英]Best way to print values from mysql table by querying through PHP

在我的頁面中,大多數時候,我需要使用循環來打印表中僅一個字段的值。 例如:

 <?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多次。

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

是上面我寫的代碼,還是有一種更快執行的方法?

  1. 避免循環訪問所有5000條記錄。 使用過濾或分頁
  2. 還要避免嵌套查詢。 使用JOIN力量。

我最好的猜測是, 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;

一般來說,循環查詢數據庫是一個非常糟糕的主意,除非您確切知道為什么要這樣做,否則應避免查詢。 循環查詢可以輕松地使數據庫服務器屈服。

使用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;

我認為這將幫助您...

為了遵循您的邏輯,我將選擇所有信息,將其加載到哈希中並在哈希中進行迭代,而不是殺死數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM