2012-11-16 41 views
0
<?php 
$soil_ph = $_POST['soilph']; 
$query = "select ph_id,ph_name,ph_from,ph_to from tbl_soilph 
where '$soil_ph' between ph_from and ph_to"; 

$result = mysql_query($query); 

while($row = mysql_fetch_array($result)) 
{ 
if ($row == 0) 
{ 
echo 'Invalid or out of range'; 
} 
else 
{ 
$ph = $row['ph_name']; 
echo $row['ph_name']; 
} 
} 
?> 

--- echo not working @($ row = 0)---有人可以幫我嗎? 上面的代碼工作正常,它給出結果,但是當沒有數據時它不顯示消息「無效輸入」?

+2

的'while'條件已經檢查感實性的'$ row'變量。這就是爲什麼內部的'if'永遠不會看到缺少的值。用_num_rows(或任何日期的mysql函數是什麼)檢查。 – mario

+0

你能給我正確的代碼嗎?馬里奧? – raine

+0

你必須做不同的if語句,檢查我的答案 –

回答

-1

其實mysql_fetch_array函數每次執行時都會返回一個單維數組。你可以這樣做:

if($results){ 
echo 'No Results'; 
}else{ 
while($row = mysql_fetch_array($result)) 
{ 
if(!empty($row)){ 
echo $row['ph_name']; 
}else{ 
echo 'invalid'; 
} 
} 
+0

仍然一樣... – raine

+0

@raine:也許ph_name是空白的? – siride

+0

@siride:不,它不是空的... – raine

0
$soil_ph = $_POST['soilph']; 
$query = "select ph_id,ph_name,ph_from,ph_to from tbl_soilph 
where '$soil_ph' between ph_from and ph_to"; 

$result = mysql_query($query); 
if($result && mysql_num_rows($result)) { 

while() { 

} 
} else { 
    echo 'invalid input'; 
} 
0

檢查這個代碼,你必須改變你的方法循環

if (mysql_num_rows($result) < 1) { 

    echo 'Invalid or out of range'; 

}else{ 

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

     $ph = $row['ph_name']; 
     echo $row['ph_name']; 
    } 
} 
2

首先,你應該總是在數據庫中查詢使用它們之前逃脫你的變量(除非您使用預先準備的語句,您應該):

$soil_ph = $_POST['soilph']; 
$query = "SELECT ph_id, ph_name, ph_from, ph_to 
    FROM tbl_soilph 
    WHERE '" . mysql_real_escape_string($soil_ph) . "' BETWEEN ph_from AND ph_to"; 

$result = mysql_query($query); 

要檢查您是否有任何結果,應該使用mysql_num_rows()確保查詢沒有失敗後:

if ($result && mysql_num_rows($result)) { 
    while ($row = mysql_fetch_array($result)) { 
     // do your stuff 
    } 
} else { 
    // aww, nothing there 
} 

延伸閱讀:MySQLiPDO