首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法计数已成功执行的mysqli查询

问无法计数已成功执行的mysqli查询
EN

Stack Overflow用户
提问于 2017-05-21 15:48:00
回答 2查看 69关注 0票数 0

我想看看我的查询是否成功(虽然我成功地执行了insert查询),但是在第25行中得到了这个错误:"mysqli_num_rows()希望参数1是mysqli_result,布尔值,考虑到“我已经检查了每一行,我甚至使用了mysqli_affected_rows,失败了。感谢您的帮助,这是我的代码:

代码语言:javascript
复制
<?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;                                                             
    }                                                                         
  }                                                                         
?>                                                                                  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-21 16:11:48

$nmb = mysqli_num_rows($res);无法工作,因为$res是INSERT查询的结果。mysqli_query说:

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

因此,$res将始终是false或true,您将无法在其上使用mysqli_num_rows()或mysqli_affected_rows()。问题是,无论如何,在这里计数行是没有意义的。您正在尝试插入一条记录,所以它要么是1,要么是零,所以正确或错误的结果应该足以检测查询是否成功。

票数 1
EN

Stack Overflow用户

发布于 2017-05-21 16:10:00

改变这一点:

代码语言:javascript
复制
$res = mysqli_query($conn, $query);

$nmb = mysqli_num_rows($res);

echo $nmb; 

为此:

代码语言:javascript
复制
$res = mysqli_query($conn, $query);
if ($res) { 
   echo "Insert ok";
}
else
{
   echo "Problem to insert";
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44098791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档