Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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 无法统计成功执行的mysqli查询_Php_Mysqli_Insert Into - Fatal编程技术网

Php 无法统计成功执行的mysqli查询

Php 无法统计成功执行的mysqli查询,php,mysqli,insert-into,Php,Mysqli,Insert Into,我想看看我的查询是否成功(当然,我成功地完成了插入查询),但在第25行出现了这个错误:“mysqli_num_rows()期望参数1是mysqli_result,布尔值给定”我已经检查了每一行,我甚至使用了mysqli_受影响的_行,但失败了。感谢您的帮助,以下是我的代码: <?php include "connection.php"; $fn = $_POST['first_name']; $ln = $_POST['last_name']; $uname =

我想看看我的查询是否成功(当然,我成功地完成了插入查询),但在第25行出现了这个错误:“mysqli_num_rows()期望参数1是mysqli_result,布尔值给定”我已经检查了每一行,我甚至使用了mysqli_受影响的_行,但失败了。感谢您的帮助,以下是我的代码:

<?php
   include "connection.php";  
   $fn = $_POST['first_name'];
   $ln = $_POST['last_name'];
   $uname = $_POST['username'];
   $pwd = $_POST['password'];
   $stat = $_POST['status'];  
   if($fn=="" || $ln=="" || $uname=="" || $pwd=="" || $stat==""){
     echo "ALL FIELD MUST BE FILLED!";
   }                                                                        
   else {
     $sql = "SELECT * from user WHERE username='$uname'";
     $result = mysqli_query($conn, $sql);
     $number = mysqli_num_rows($result);
   if ($number != 0) {
     echo "Username $uname is not available";
   }
   else {
     $options = ['cost' => 12];
     $pwd = password_hash($pwd, PASSWORD_BCRYPT, $options);
     $query = "INSERT INTO user 
              (username,password,first_name,last_name,status) VALUES 
              ('$uname','$pwd','$fn','$ln','$stat')";
     $res = mysqli_query($conn, $query);
     $nmb = mysqli_num_rows($res);

     echo $nmb;                                                             
    }                                                                         
  }                                                                         
?>                                                                                  
更改此选项:

$res = mysqli_query($conn, $query);

$nmb = mysqli_num_rows($res);

echo $nmb; 
为此:

$res = mysqli_query($conn, $query);
if ($res) { 
   echo "Insert ok";
}
else
{
   echo "Problem to insert";
}

$nmb=mysqli\u num\u行($res)
无法工作,因为
$res
是插入查询的结果。说:

失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象。对于其他成功的查询,mysqli_query()将返回TRUE


因此,
$res
将始终为
false
true
,您将无法在其上使用
mysqli\u num\u rows()
mysqli\u impact\u rows()
。问题是,不管怎么说,计算行数在这里是没有意义的。您正在尝试插入一条记录,因此它将是1或0,因此正确或错误的结果应足以检测查询是否成功。

哪一行是第25行?因为这意味着查询没有正确执行。如果您使用的是MySQL,我建议您使用。@FluxCoder这与PDO仍然存在相同的问题。@Don't但是,使用PDO更安全,我更喜欢它,因为我发现它也更容易使用。PDO本身并不安全。使用预先准备好的语句更安全,但在mysqli中也可以这样做,但这里没有这样做,所以我也不认为他们会使用PDO。(不过我也很喜欢。我同意这样更容易。)基本上就是OP在评论中所说的,但是
echo“插入问题”永远无法帮助他们找到查询失败的真正原因。@Fred ii-是的,差不多。不过,一开始我添加了一些误导性的注释,因为我认为它们最初指的是SELECT查询。我认为答案会更明确,包括更好的解释,我将删除我的一些评论。