2012-01-09 87 views
0

我有一個DB(quartos):MySQL的查詢表 - 結構如下創建不顯示第一個結果

id_quarto tipo_quarto vista_quarto | 
a  Single Mar | 
b  Single Mar | 
c  Single Mar | 
d  Single Serra | 

我想它返回id_quarto,結果當tipo_quarto =單和vista_quarto = Mar的價值來源於一種形式。

所以我寫了以下內容:

$strSQL = " 
SELECT id_quarto 
FROM quartos 
WHERE tipo_quarto='". $_POST['tipo_quarto'] ."' 
    AND vista_quarto='". $_POST['vista_quarto'] ."'"; 
$rs = mysql_query($strSQL); 
$row = mysql_fetch_array($rs); 

然後我循環,併爲隨後在表中寫:

while($row = mysql_fetch_array($rs)) { 
<? 
<table border="1"> 
    <tr align="left"> 
     <td width="75"><?php echo $row['id_quarto']; ?></td> 
    </tr> 
</table> 

這裏的問題是,它不會返回id_quarto = A,只有b和c。爲什麼是這樣,我能做些什麼來解決它?

謝謝。

+0

不要直接在SQL查詢中使用POST變量。這是sql注入迫在眉睫! – 2012-01-09 17:54:45

+0

@ElzoValugi如果我使用mysql_real_escape_string()進行POST會爲SQL注入問題(裸露與我我是一個新手)? – SerafimSaudade 2012-01-12 14:28:18

+0

這還不夠,請使用filter_var函數。 – 2012-01-12 15:16:35

回答

2

您在mysql_query($strSQL);之後有額外的$row = mysql_fetch_array($rs);。然後在while循環中再次讀取$row(結果集中的第二行)。 所以,你的代碼看起來

$strSQL = "SELECT id_quarto FROM quartos 
    WHERE tipo_quarto='". $_POST['tipo_quarto'] ."' 
    AND vista_quarto='". $_POST['vista_quarto'] ."'"; 
$rs = mysql_query($strSQL); 
// $row = mysql_fetch_array($rs); Don't need this line!!! 
while($row = mysql_fetch_array($rs)) 
{ 
    // output .... 
} 

而且,它總是有意義的處理MySQL的錯誤添加代碼。

+0

那麼,我該如何寫我的代碼呢? – SerafimSaudade 2012-01-09 17:51:00

+0

@ user1139233:查看更新後的版本 – a1ex07 2012-01-09 17:53:55

+0

@ user1139233您可以使用'mysql_data_seek'函數通過在啓動while循環之前放置'mysql_data_seek($ rs,0)'來重置行指針,但在$ row = mysql_fetch_array( $ RS); ' – klennepette 2012-01-09 17:57:30

相關問題