if else语句不起作用,不会回应其他

时间:2012-10-23 08:24:58

标签: php

嗨,希望有人可以提供帮助,

在一个页面上,我有一个表格,你输入一个id号码,在表格提交时,如果id号码在数据库中,它显示来自数据库的信息,如果不是,它应该显示no。请查看下面的代码,如果您输入数据库中的ID号,它正常工作并显示数据库信息,但是如果您输入的数字不在数据库中,则它不显示任何内容,我想要它回应没有。

如果有人能指出我正确的方向,我将非常感激。

include '../book_classified_advertising/dbc.php';

$deletepost  = $_POST['webid1']; 

$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");

while($row = mysql_fetch_array($result))
{
    if ($deletepost == $row['webid'])
    {
        echo $row['text']; 
    }
    else
    {
        echo 'no';
    }
}

5 个答案:

答案 0 :(得分:2)

首先,您的代码容易受到SQL Injection的最基本形式的攻击(除非在脚本开头包含的文件中应用某种形式的清理)。

现在,根据您的问题,永远不会达到该条件的else部分,因为它嵌套在迭代中,通过数据库查询的所有结果。如果没有结果,则while循环内的语句不会被执行。

答案 1 :(得分:2)

您需要为此重新组织代码:

$result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");

if( mysql_num_rows($result) == 0) {
  echo 'no';
}
else  {
  while($row = mysql_fetch_array($result)) {
    echo $row['text']; 
  }
}

答案 2 :(得分:1)

因为你所使用的$deletepost所在的位置如果是这样的话if中的条件总是如果有$deletepost的任何行

您可以通过mysql_num_rows($result)

进行检查

喜欢

$$deletepost =2'

查询

$result = mysql_query("SELECT * FROM class WHERE webid='2'");

$row['webid'] will be 2

if ($deletepost == $row['webid']) ///its like if(2 == 2)
{
echo $row['text']; 
}

尝试类似

的内容
 $result = mysql_query("SELECT * FROM class WHERE webid='$deletepost'");
if(mysql_num_rows($result)){
while($row = mysql_fetch_array($result))
{


        echo $row['text']; 


}}else
    {
        echo 'no';
    }

答案 3 :(得分:0)

问题在于:

while($row = mysql_fetch_array($result))

如果没有结果,那么你的if语句永远不会运行。

答案 4 :(得分:0)

使用Mysql_num_rows检查记录编号

$num_rows = mysql_num_rows($result);
if($num_rows)
 {
     True condition
 }
else
 { 
    Fales condition
 }