当前位置: 首页 > news >正文

php mysqli_affected_rows(),Mysqli_num_rows与PHP中mysqli_affected_rows的区别

今天写项目的时候用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);?>123456789101112131415

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

$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);?>1234567891011121314

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

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

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

mysqli_num_rows() expects parameter 1 to be mysqli_result1

然后我就蒙圈了,你说我一个搞前端的,玩儿啥PHP啊,本着一个对代码的热爱还是把这个问题搞明白了。

mysqli_num_rows()这个函数只用于SELECT查询方法,而mysqli_affected_rows()函数是记录上一个sql语句对整个数据库的影响从而把受影响的数据个数返回,这个主要用于INSERT(插入)、UPDATE(替换)、DELETE(删除)。

重点来了,这两个函数所需参数不是一样的,我就吃了这个亏,传的都是sql语句执行的结果也就是上边代码的

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

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

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

他需要一个mysql作为一个参数,就是这个数据库,他需要记录上一个sql语句对整个数据库的影响。以上就是我的理解,龙伏白威!

相关文章:

  • R语言字符串替换:gsub()
  • matlab实现数据压缩,【Matlab】Huffman编码如何实现数据压缩
  • getcurrenttime java,getcurrenttime
  • java nio netty 教程,4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了),netty实现...
  • java ucs 2,【字符编码系列】JavaScript使用的编码-UCS-2
  • R语言-文件管理系统操作 list.files dir.file dir
  • metaweblog php,.NET_在Asp.Net中创建MetaWeblog API, 概念   metaweblog是基于XML - phpStudy...
  • php android okgo上传图片,Android OkHttp的封装类OkGo的用法
  • find与xargs连用复制移动位置
  • linux命令行模式kvm,Linux虚拟机-使用命令行管理虚拟机---KVM一些常用的命令
  • 如何编译源代码
  • linux中间隔10ping一次脚本,linux脚本每隔几分钟ping指定ip如不通向指定手机发送短信...
  • 空间转录组学(Spatial Transcriptomics)
  • linux spark编译,Spark源码编译
  • linux python源码目录结构,一台 Web 用途 Python 的Linux 服务器的目录结构、用户分组应该是怎样的?...
  • #Java异常处理
  • 【5+】跨webview多页面 触发事件(二)
  • 3.7、@ResponseBody 和 @RestController
  • Android开源项目规范总结
  • Angular 2 DI - IoC DI - 1
  • C++11: atomic 头文件
  • Facebook AccountKit 接入的坑点
  • MySQL-事务管理(基础)
  • node-glob通配符
  • spring学习第二天
  • Travix是如何部署应用程序到Kubernetes上的
  • 从零开始学习部署
  • 读懂package.json -- 依赖管理
  • 服务器之间,相同帐号,实现免密钥登录
  • 记录一下第一次使用npm
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 跳前端坑前,先看看这个!!
  • 微信公众号开发小记——5.python微信红包
  • kubernetes资源对象--ingress
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #14vue3生成表单并跳转到外部地址的方式
  • $.ajax中的eval及dataType
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (27)4.8 习题课
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (强烈推荐)移动端音视频从零到上手(下)
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)Thymeleaf用法——Thymeleaf简介
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .equals()到底是什么意思?
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net framework4与其client profile版本的区别
  • .net mvc部分视图
  • .net Signalr 使用笔记
  • .Net Winform开发笔记(一)
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NetCore项目nginx发布
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递