Code前端首页关于Code前端联系我们

如何使用受影响的行来衡量数据库中更新的行数

terry 2年前 (2023-09-30) 阅读数 44 #PHP
文章标签 PHP

1. 什么是受影响的行?

向PHP页面更新数据库操作时,我们可以关注每次操作更新了多少行数据。 Affected Rows是指执行数据库操作后受影响的数据行数。它的值只能等于脚本使用查询后返回的行数。这意味着当操作成功时,affectrows返回数据库中刚刚被操作的记录行数。使用受影响的行是测量受查询语句执行影响的行数的有效方法,特别是对于 UPDATE、DELETE 和 INSERT INTO 语句。在 PHP 中,可以通过函数值 mysqli_affected_rows() 或 PDO::rowCount() 获取受影响的行。

2。使用 mysqli_affected_rows() 实现受影响行的测量

Mysqli连接对象是用于访问MySQL数据库服务器的连接对象。使用mysqli操作数据库时,可以使用mysqli_affected_rows()函数返回上一次操作影响的记录行数。

//建立mysqli连接对象
$conn = mysqli_connect('localhost','username','password','database');

if($conn) {
   //执行SQL语句
   $sql = "UPDATE user SET age =32 WHERE id =1";
   mysqli_query($conn,$sql);
  
   //获取更新行数
   $num = mysqli_affected_rows($conn);
  
   //输出更新行数
   echo $num; 

   //关闭mysqli连接
   mysqli_close($conn);
} 

3。使用 PDO::rowCount() 实现受影响行的测量

PDO 是 PHP 数据对象的缩写。它是PHP5中的一个轻量级框架,为数据访问抽象和数据库交互提供了简单一致的方法。使用PDO连接数据库时,可以使用PDO::rowCount()函数返回受前一操作影响的记录行数。

//建立PDO连接对象
$conn =new PDO("mysql:host=localhost;dbname=database",'username','password');
  
if($conn){
   //执行SQL语句
   $sql = "UPDATE user SET age =32 WHERE id =1";
   $conn->exec($sql);
  
   //获取更新行数
   $num = $conn->rowCount();
  
   //输出更新行数
   echo $num;

   //关闭PDO连接
   $conn= null;
}

4。使用 Affected Rows 来测量 INSERT INTO 语句中的行数

使用INSERT INTO语句时,由于INSERT INTO语句只插入一行数据,因此默认受影响的行数为1。但是,如果使用 INSERT INTO 语句插入多行数据,则受影响的行将返回插入的行数。

//建立mysqli连接对象
$conn = mysqli_connect('localhost','username','password','database');

if($conn) {
   //执行SQL语句
   $sql = "INSERT INTO user(id, name, age) VALUES
           ('2','zhangsan','18'),
           ('3','lisi','19'),
           ('4','wangwu','20')";
   mysqli_query($conn,$sql);
  
   //获取插入行数
   $num = mysqli_affected_rows($conn);
  
   //输出更新行数
   echo $num; 

   //关闭mysqli连接
   mysqli_close($conn);
} 

5。使用 Affected Rows 来测量 DELETE 语句中的行数

使用DELETE语句删除一条或多条记录行。在这种情况下,受影响的行返回已删除的行数。

//建立mysqli连接对象
$conn = mysqli_connect('localhost','username','password','database');

if($conn) {
   //执行SQL语句
   $sql = "DELETE FROM user WHERE age >20";
   mysqli_query($conn,$sql);
  
   //获取删除行数
   $num = mysqli_affected_rows($conn);
  
   //输出删除行数
   echo $num;

   //关闭mysqli连接
   mysqli_close($conn);
} 

6。总结

通过影响行,可以第一时间知道数据库对表的操作影响的行数,这样可以更容易有针对性地排除一些问题。  同时,由于受影响的行是数据库返回的结果,因此其准确性可以得到保证,可以避免人为错误,例如手动检查操作结果时。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门