PHP中mysqli_affected_rows与mysqli_num_rows的区别

PHP中mysqli_affected_rows与mysqli_num_rows的区别

今天写项目的时候用PHP搭了一个接口用于用户登录注册,登录我是这么写的

<?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    $con = mysqli_connect('localhost','root','root','hubayi');
    $sql = "select * from users where name='$username' and password='$password'";
    $res = mysqli_query($con,$sql);
    $num = mysqli_num_rows($res);
    if($num > 0) {
        setcookie('login',1,time() + 60 * 60,'/',NULL,NULL);
        $arr = array('error' => 0,'data' => '成功');
    }else {
        $arr = array('error' => 1, 'data' => '失败','text' => $password);
    }
    echo json_encode($arr);
?>

在这个文件中我是用mysqli_num_rows获取受影响行数的,这个是没问题的,可以运行,于是我就比着葫芦画瓢,又写了一个注册

<?php
    $username = $_POST['username'];
	$password = $_POST['password'];
    $con = mysqli_connect('localhost','root','root','hubayi');
    $sql = "INSERT INTO users(name,password) VALUES('$username','$password')";
    $res = mysqli_query($con,$sql);
    $num = mysqli_affected_rows($res);
    if($num > 0) {
        $arr = array('error' => 0,'data' => '注册成功');
    } else {
        $arr = array('error' => 1,'data' => '注册失败');
    }
    echo json_encode($arr);
?>

然而这个代码就给我报错了,

mysqli_affected_rows() expects parameter 1 to be mysqli, bool given in <b>E:\phpstudy_pro\WWW\link\zhuce.php</b> on line <b>7</b><br />

就是这个错,以前我也遇到过,一般都是sql语句写错了,于是我研究一大会子也没看出来我这个sql语句哪错了,然后我就把mysqli_affected_rows()这个函数换成了mysqli_num_rows,于是又给我报这个错

mysqli_num_rows() expects parameter 1 to be mysqli_result

然后我就蒙圈了,你说我一个搞前端的,玩儿啥PHP啊,本着一个对代码的热爱还是把这个问题搞明白了。
mysqli_num_rows()这个函数只用于SELECT查询方法,而mysqli_affected_rows()函数是记录上一个sql语句对整个数据库的影响从而把受影响的数据个数返回,这个主要用于INSERT(插入)、UPDATE(替换)、DELETE(删除)。
重点来了,这两个函数所需参数不是一样的,我就吃了这个亏,传的都是sql语句执行的结果也就是上边代码的

$res = mysqli_query($con,$sql);

每次都传res,当然在mysqli_num_rows()是没问题的,因为mysqli_num_rows()需要就是这个结果,但是mysqli_affected_rows()就不一样了,他需要的是$con,也就是

$con = mysqli_connect('localhost','root','root','hubayi');

他需要一个mysql作为一个参数,就是这个数据库,他需要记录上一个sql语句对整个数据库的影响。以上就是我的理解,龙伏白威!
对前端感兴趣的小伙伴可以加我QQ:1627889159

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫胡八一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值