如下圖所示,為什么程序不能讀出數(shù)據(jù)庫(kù)數(shù)據(jù)?
你的代碼上有幾個(gè)問(wèn)題:
連接上數(shù)據(jù)庫(kù)之后,選擇數(shù)據(jù)表的操作mysql_select_db()
要在查詢操作mysql_query()
之前,否則查詢不知道在哪個(gè)數(shù)據(jù)表中查,就會(huì)直接在整個(gè)數(shù)據(jù)庫(kù)運(yùn)行語(yǔ)句。然而,你這個(gè)SQL語(yǔ)句寫法卻不符合數(shù)據(jù)庫(kù)上查詢的格式,所以會(huì)執(zhí)行失敗,也就是沒(méi)有數(shù)據(jù)。
mysql_query()
對(duì)于SELECT
語(yǔ)句,返回的是一個(gè)資源引用或者FALSE
值,要遍歷里面所有的行需要使用mysql_fetch_assoc()
遍歷資源并返回行數(shù)據(jù)。
建議不要將<?php
的問(wèn)號(hào)和php
分開(kāi)來(lái)寫,因?yàn)檫@個(gè)是引擎識(shí)別PHP開(kāi)始的標(biāo)識(shí),分開(kāi)可能會(huì)導(dǎo)致引擎識(shí)別出錯(cuò)
所以,
第一點(diǎn),把mysql_select_db()
和mysql_query()
兩行調(diào)換位置。mysql_select_db()
和mysql_query()
兩行調(diào)換位置。
第二點(diǎn),將foreach($result as $row)
改為while($row = mysql_fetch_assoc($result))
第二點(diǎn),將foreach($result as $row)
改為while($row = mysql_fetch_assoc($result))
mysql_query() 僅對(duì) SELECT,SHOW,EXPLAIN 或 DESCRIBE 語(yǔ)句返回一個(gè)資源標(biāo)識(shí)符,如果查詢執(zhí)行不正確則返回 FALSE。
對(duì)于其它類型的 SQL 語(yǔ)句,mysql_query() 在執(zhí)行成功時(shí)返回 TRUE,出錯(cuò)時(shí)返回 FALSE。
非 FALSE 的返回值意味著查詢是合法的并能夠被服務(wù)器執(zhí)行。這并不說(shuō)明任何有關(guān)影響到的或返回的行數(shù)。很有可能一條查詢執(zhí)行成功了但并未影響到或并未返回任何行。
mysql_fetch_assoc() 函數(shù)從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組。
返回根據(jù)從結(jié)果集取得的行生成的關(guān)聯(lián)數(shù)組,如果沒(méi)有更多行,則返回 false。
while($row = mysql_fetch_assoc($result)) {
echo $row["id"];
}