Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 输入if语句时未显示结果_Php_Html - Fatal编程技术网

Php 输入if语句时未显示结果

Php 输入if语句时未显示结果,php,html,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_

这是我遇到问题的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;
}
$query=“从客户端选择*,其中idcard='$idcard';
$result=mysqli\u查询($dbc,$query)
或者死(“错误查询数据库”);
如果(mysqli_fetch_array($result)==False)回显“对不起,找不到客户端”;
while($row=mysqli\u fetch\u数组($result)){
$list=$row['first_name']。$row['last_name']。$row['address']。$row['town']。$row['telephone']。$row['mobile'];
回声“
”; echo$列表; }
即使我插入了一个现有的idcard值,但当存在if语句时,我没有得到任何输出,错误的idcard也会显示“对不起,找不到客户机”。但是,如果我删除if语句,如果我输入现有的idcard,数据将显示ok

你能告诉我密码有什么问题吗

谢谢

mysqli_fetch_array()
从数据库中获取项目

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

然后,当您从
while()
条件再次调用
mysqli\u fetch\u array()
时,第一个项目已经被提取,您正在尝试提取第二个项目;这是不存在的


您必须确保使用来自
mysqli\u fetch\u array()
的结果,而不是徒劳地调用它一次;或者,您也可以使用以下函数(引用):

返回结果集中的行数

mysqli\u fetch\u array()

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

然后,当您从
while()
条件再次调用
mysqli\u fetch\u array()
时,第一个项目已经被提取,您正在尝试提取第二个项目;这是不存在的


您必须确保使用来自
mysqli\u fetch\u array()
的结果,而不是徒劳地调用它一次;或者,您也可以使用以下函数(引用):

返回结果集中的行数


想象你在口袋里放了一些钱。
最后,你想到了一个主意,看看你是否还有钱。
你把它拿出来数一数。好的。
你手里还拿着它们,决定从口袋里拿出来。哎呀!口袋是空的

那是你的问题


要查看是否从数据库中获取了任何行,可以使用
mysqli\u num\u rows()
。它将返回账单数量,而不从口袋中取出

想象你在口袋里放了一些钱。
最后,你想到了一个主意,看看你是否还有钱。
你把它拿出来数一数。好的。
你手里还拿着它们,决定从口袋里拿出来。哎呀!口袋是空的

那是你的问题


要查看是否从数据库中获取了任何行,可以使用
mysqli\u num\u rows()
。它将返回账单数量,而不从口袋中取出

使用
mysqli_num_rows
计算结果:

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

使用
mysqli\u num\u rows
计算结果:

if(mysqli_num_rows($result) == 0) echo "Sorry, no clients found";
使用
mysqli_num_rows()
测试是否有返回的内容。

使用
mysqli_num_rows()
测试是否有返回的内容。

$query=“SELECT*FROM clients,其中idcard='$idcard';
$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 />";
    }

}
$result=mysqli\u查询($dbc,$query) 或者死(“错误查询数据库”); if(mysqli_num_rows($result)==0){ echo“对不起,找不到客户端”; }否则{ while($row=mysqli\u fetch\u数组($result)){ $list=$row['first_name']。$row['last_name']。$row['address']。$row['town']。$row['telephone']。$row['mobile']; echo$list.“
”; } }
试试这个

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

$query=“从客户机中选择*,其中idcard='$idcard';
$result=mysqli\u查询($dbc,$query)
或者死(“错误查询数据库”);
if(mysqli_num_rows($result)==0){
echo“对不起,找不到客户端”;
}否则{
while($row=mysqli\u fetch\u数组($result)){
$list=$row['first_name']。$row['last_name']。$row['address']。$row['town']。$row['telephone']。$row['mobile'];
echo$list.“
”; } }
试试这个


编辑:添加了结束括号。

问题是,您试图使用
mysqli\u fetch\u数组
查询结果数
mysqli_fetch_array
将获取第一个结果,将其与false进行比较,然后丢弃它。然后,下一个
mysqli\u fetch\u数组将获取不存在的第二个结果

如果要检查是否找到了任何客户机,可以像这样使用
mysqli\u num\u 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注入攻击

问题是,您试图使用
mysqli\u fetch\u array
查询结果数量
mysqli_fetch_array
将获取第一个结果,将其与false进行比较,然后丢弃它。然后,下一个
mysqli\u fetch\u数组将获取不存在的第二个结果

如果要检查是否找到了任何客户机,可以像这样使用
mysqli\u num\u 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注入攻击

尝试改用
mysqli_num_rows($result)==0
。您的代码也有一个
{
,但没有
}
。请尝试改用
mysqli\u num\u行($result)==0
。您的代码也有一个
{
,但不是
}
。如果$idcard不是用户提供的值怎么办?除了跨站点脚本、非OP编写的软件中的服务器端漏洞、社会工程、宿主的社会工程、DNS缓存操纵、,