输入if语句时没有显示结果

时间:2012-02-11 12:55:12

标签: php html

这是我遇到问题的PHP代码的一部分:

$query = "SELECT * FROM clients where idcard = '$idcard'";
$result = mysqli_query($dbc, $query)
  or die("Error quering database.");

if(mysqli_fetch_array($result) == False) echo "Sorry, no clients found";
while($row = mysqli_fetch_array($result)) {
   $list = $row['first_name'] . " " . $row['last_name'] . " " . $row['address'] . " " . $row['town'] . " " . $row['telephone'] . " " . $row['mobile'];
   echo "<br />";
   echo $list;
}

即使我插入现有的idcard值,如果有if语句也没有输出,不正确的idcard显示“抱歉,找不到客户端”。但是,如果我在输入现有的idcard时删除if语句,则数据显示正常。

请告诉我代码有什么问题吗?

由于

6 个答案:

答案 0 :(得分:3)

使用mysqli_num_rows计算结果:

if(mysqli_num_rows($result) == 0) echo "Sorry, no clients found";

答案 1 :(得分:2)

mysqli_fetch_array()从数据库中提取项目。

这意味着您的if()代码会从数据库中获取第一个项目。

然后,当您从mysqli_fetch_array()条件再次呼叫while()时,已经提取了第一个项目,并且您正在尝试获取第二个项目;哪个不存在。


您必须确保使用mysqli_fetch_array()的结果,而不是一次只用调用它;或者,作为替代方案,您可以使用mysqli_num_rows()函数(引用)

  

返回结果集中的行数。

答案 2 :(得分:2)

$query = "SELECT * FROM clients where idcard = '$idcard'";
$result = mysqli_query($dbc, $query)
  or die("Error quering database.");

if(mysqli_num_rows($result) == 0) {
    echo "Sorry, no clients found";
}else{
    while($row = mysqli_fetch_array($result)) {
       $list = $row['first_name'] . " " . $row['last_name'] . " " . $row['address'] . " " . $row['town'] . " " . $row['telephone'] . " " . $row['mobile'];

        echo $list . "<br />";
    }

}

试试这个。

已编辑:已添加结束括号。

答案 3 :(得分:0)

使用mysqli_num_rows()来测试是否有任何返回。

答案 4 :(得分:-1)

想象一下,你把一些钱放在口袋里 最终你想到了一个想法,看看你是否还有钱 你把它拿出来计算它们。好的。
还在手拿着你决定从口袋里拿走它们。哎呀!口袋是空的!

那是你的问题。

要查看数据库中是否有任何行,您可以使用mysqli_num_rows()。它将返回账单数量,而不从口袋中取出。

答案 5 :(得分:-1)

问题是,您尝试使用mysqli_fetch_array来查询结果数。 mysqli_fetch_array将获取第一个结果,将其与false进行比较,然后将其丢弃。然后,下一个mysqli_fetch_array将获取第二个结果,该结果不存在。

如果您想检查是否找到了任何客户,您可以使用mysqli_num_rows这样:

$idcard = mysqli_escape_string($dbc, $idcard); // See below: Prevents SQL injection
$query = "SELECT * FROM clients where idcard = '$idcard'";
$result = mysqli_query($dbc, $query) or die("Error quering database.");

if(mysqli_num_rows($result) == 0) {
  echo "Sorry, no clients found";
} else {
  while($row = mysqli_fetch_array($result)) {
     // Do whatever you want
  }
}

如果$idcard是用户提供的值,请注意 SQL注入攻击