2009-09-16 25 views
0

我已經寫了這段代碼以獲取表中的所有記錄;然而,由於某種原因,它不工作:我的選擇查詢有什麼問題?

function GetAllData(){ 
    $result = mysql_query("SELECT * FROM a2h_member_type"); 

    while($row = mysql_fetch_array($result)) 
    { 
     echo $row['member_type_id'] . " " . $row['member_type_name'] . " " . $row['description'];  
    } 
} 

它不進入while循環,但有2個表中的記錄。有任何想法嗎?

+2

你確定你已經打開了與數據庫的連接,並輸入正確的數據庫和表名等?不要聽起來居高臨下,那就是我的問題中有99%來自於 - 愚蠢的語法錯誤。 – user97410 2009-09-16 13:19:44

+0

mysql_num_rows($ result)的結果是什麼?實際上, – Zed 2009-09-16 13:19:55

+0

是$ result是否爲假? – Zed 2009-09-16 13:21:27

回答

4

有會是兩個原因while循環就不會競選:

  1. 查詢失敗。
    • 表不存在
    • 有到數據庫
  2. 有表中沒有行無連接:由於查詢簡單,如果只可能發生。

你能檢查這三件事嗎?您可以檢查是否有打印出mysql_error()一個錯誤,你可以通過使用mysql_get_num_rows($result)

+0

我已經檢查,但不能正常工作 – Rajasekar 2009-09-16 13:20:57

+0

什麼不起作用?檢查不起作用?這些功能的輸出是什麼? – nickf 2009-09-16 13:35:06

3

檢查什麼mysql_errno()mysql_error()返回檢查返回的行數。

由於每PHP documentation

錯誤來從MySQL數據庫後端回不再發出警告。

這意味着你必須手動檢查錯誤(無論如何這是一個很好的做法)。

0

我唯一的建議是用單回引號的表名(我敢肯定的角色有一個更正式的名字!):

$result = mysql_query("SELECT * FROM `a2h_member_type`"); 

- 但因爲大家還不t表中的任何奇怪的字符我認爲這不會有太大的區別。儘管可能值得一試。

+2

我認爲角色接受的「官方」名稱是「反向」:-) – Tomalak 2009-09-16 13:26:28

+0

謝謝,很高興知道這些事情! – Waggers 2009-09-16 14:44:05

0

你有這封裝在一個函數。根據腳本中函數的調用時間和位置,您可能尚未打開數據庫連接或選擇了數據庫。在你調用這個函數之前,你需要做到這兩點。去看看那裏的函數被調用你的代碼,並確保你叫這兩樣東西你怎麼稱呼它之前:

$con = mysql_connect([the databases URL], [your database username], [your database password]); 
if(!$con) { 
     die("Could not connect: " .mysql_error()); 
} 
mysql_select_db([the name of your database], $con); 

大概做會節省您的連接變量在某種程度上(在$ CON中的最好的事情這個例子),並使用if(!$ con)代碼在函數的開頭檢查它。

0

我沒有看到mysql_connect()或mysql_select_db()命令,所以我假設你在調用這個方法之前已經連接了。我還假設你已經使用了字段名稱的確切拼寫,因爲它們區分大小寫!所以,邏輯會規定mysql_fetch_array($ result)不返回任何行。

由於該方法沒有明確地打開數據庫,並且mysql_query()沒有指定特定的數據庫資源,查詢將查看使用mysql_connect()打開的最後一個數據庫。如果您從未連接或切換到其他數據庫,則無法找到數據庫。 mysql_query()可能返回FALSE,因此mysql_fetch_array()也會返回FALSE。

0

首先嚐試添加一些調試信息:

error_reporting(E_ALL); 
ini_set("display_errors", true); 
.......... 
function GetAllData(){ 
    $result = mysql_query("SELECT * FROM a2h_member_type") or die(mysql_error()); 

    while($row = mysql_fetch_array($result)) 
    { 

     echo $row['member_type_id'] . " " . $row['member_type_name'] . " " . $row['description']; 

    } 
} 

執行此,請告訴我們你所看到的。