2013-05-22 71 views
-1

我有一個問題,MySqli不輸出我的查詢結果。

$cxn=mysqli_connect($host,$user,$pw,$dbname) or die("Error connecting to server"); 

if(!$cxn=mysqli_connect($host,$user,$pw,$dbname)){ 

     $message=mysqli_error($cxn); 
     echo $message; 
     die(); 

} 

$query= "SELECT * from merchantinfo WHERE industry='Retail'"; 
$result=mysqli_query($cxn,$query) or die("Could not execute the query"); 
$row=mysqli_fetch_assoc($result); 


while($row = mysqli_fetch_assoc($result)) 
{ 
extract($row); 
echo "$INDUSTRY: $NAME<br/>"; 
} 

這是我目前使用的表。(merchantinfo)

MerchantID INDUSTRY NAME    DESCRIPTION 
1    Dining  Burger King  Whopper,Whoppers galore! 
2    Retail  ZARA    A large clothing retailer 
3    Aviation Virgin Airlines Lolwut 

我目前得到一個完全空白的頁面,我的結果是我的查詢後,雖然我似乎無法弄清楚問題。我試着改變$ query中的'industry'和while循環到全部大寫來匹配表中的大寫字母,我也試着用小寫字母將它們全部使用。然而,我仍然得到一個空白頁面作爲輸出。

我也試圖改變$查詢

$query="SELECT * FROM merchantinfo"; 

其產生的結果爲:

Retail:ZARA 
Aviation:Virgin Airlines 

我將不勝感激,如果有人可以在代碼中指出的錯誤或點我在正確的方向

謝謝!

+0

由於某些原因,這是該標籤最常見的問題。 –

回答

0

刪除:

$row=mysqli_fetch_array($result); 

它是擷取你的第一行是不必要的(它本質上是將其丟棄)。

而且,除非你的列名是大寫,這將不起作用:

extract($row); 
echo "$INDUSTRY: $NAME<br/>"; 

這將需要相同的情況下,實際的列名。

+0

@ John Conde我懂了。只是一個簡單的問題,爲什麼不需要$ row_mysqli_fetch_array($ result)?是不是$行的目的只是爲了存儲查詢結果的臨時位置?如果是這樣,爲什麼它是不必要的,並放棄我的第一行? –

+0

它實際上是爲你抽取這行,這就是你在下面的while循環中所做的。它與mysql_fetch_assoc()非常相似,但只是以不同的方式返回數據。 –

+0

mysqli_fetch_assoc將鍵返回爲字符串,而數組將其作爲數字和鍵返回。但是,如果我應該將while循環上方的fetch_array更改爲fetch_assoc,則第一行結果將消失。我假設這是因爲第一行已經被while循環上面的mysql_fetch_assoc取回,儘管我不明白爲什麼while循環將無法訪問它,因爲「fetch」都是fetch_assoc? –