2012-01-09 99 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

相关问题