如下圖所示,為什麼程式不能讀出資料庫資料?
你的程式碼上有幾個問題:
連接上資料庫之後,選擇資料表的操作mysql_select_db()要在查詢操作mysql_query()之前,否則查詢不知道在哪個資料表中查,就會直接在整個資料庫執行語句。然而,你這個SQL語句寫法卻不符合資料庫上查詢的格式,所以會執行失敗,也就是沒有資料。
mysql_select_db()
mysql_query()
mysql_query()對於SELECT語句,傳回的是一個資源參考或FALSE值,要遍歷裡面所有的行需要使用mysql_fetch_assoc()資料並傳回行資料。
SELECT
FALSE
mysql_fetch_assoc()
建議不要將的問號和php分開來寫,因為這個是引擎識別PHP開始的標識,分開可能會導致引擎識別出錯
的問號和php分開來寫,因為這個是引擎識別PHP開始的標識,分開可能會導致引擎識別出錯
php
所以,第一點,把mysql_select_db()和mysql_query()兩行調換位置。 第二點,將foreach($result as $row)改為while($row = mysql_fetch_assoc($result))
foreach($result as $row)
while($row = mysql_fetch_assoc($result))
應該是mysql_select_db('news', $conn);
mysql_query() 僅對 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句傳回資源標識符,如果查詢執行不正確則傳回 FALSE。 對於其它類型的 SQL 語句,mysql_query() 在執行成功時傳回 TRUE,出錯時傳回 FALSE。 非 FALSE 的回傳值表示查詢是合法的並且能夠被伺服器執行。這並不說明任何有關影響到的或傳回的行數。很有可能一則查詢執行成功了但並未影響或並未傳回任何行。
mysql_fetch_assoc() 函數從結果集中取得一行作為關聯數組。 傳回根據從結果集取得的行所產生的關聯數組,如果沒有更多行,則傳回 false。
while($row = mysql_fetch_assoc($result)) { echo $row["id"]; }
去掉判斷的!
你的程式碼上有幾個問題:
連接上資料庫之後,選擇資料表的操作
mysql_select_db()
要在查詢操作mysql_query()
之前,否則查詢不知道在哪個資料表中查,就會直接在整個資料庫執行語句。然而,你這個SQL語句寫法卻不符合資料庫上查詢的格式,所以會執行失敗,也就是沒有資料。mysql_query()
對於SELECT
語句,傳回的是一個資源參考或FALSE
值,要遍歷裡面所有的行需要使用mysql_fetch_assoc()
資料並傳回行資料。建議不要將
的問號和
php
分開來寫,因為這個是引擎識別PHP開始的標識,分開可能會導致引擎識別出錯所以,
第一點,把
mysql_select_db()
和mysql_query()
兩行調換位置。第二點,將
foreach($result as $row)
改為while($row = mysql_fetch_assoc($result))
應該是mysql_select_db('news', $conn);
mysql_query() 僅對 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句傳回資源標識符,如果查詢執行不正確則傳回 FALSE。
對於其它類型的 SQL 語句,mysql_query() 在執行成功時傳回 TRUE,出錯時傳回 FALSE。
非 FALSE 的回傳值表示查詢是合法的並且能夠被伺服器執行。這並不說明任何有關影響到的或傳回的行數。很有可能一則查詢執行成功了但並未影響或並未傳回任何行。
mysql_fetch_assoc() 函數從結果集中取得一行作為關聯數組。
傳回根據從結果集取得的行所產生的關聯數組,如果沒有更多行,則傳回 false。
去掉判斷的!