-3

您好,希望有人可以提供帮助,

在一个页面上,我有一个表单,您可以在其中输入 ID 号,如果 ID 号在数据库中,则在提交表单时,它会显示来自数据库的信息,如果不是,则应该显示“否”。请参阅下面的代码,目前,如果您输入数据库中的 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';
    }
}
4

5 回答 5

2

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

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

于 2012-10-23T08:28:32.150 回答
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']; 
  }
}
于 2012-10-23T08:29:28.917 回答
1

因为$deletepost你使用的地方是相同的,所以如果有任何行$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';
    }
于 2012-10-23T08:27:51.510 回答
0

问题在这里:

while($row = mysql_fetch_array($result))

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

于 2012-10-23T08:28:17.183 回答
0

使用 Mysql_num_rows 来检查没有记录

$num_rows = mysql_num_rows($result);
if($num_rows)
 {
     True condition
 }
else
 { 
    Fales condition
 }
于 2012-10-23T08:30:47.703 回答