PHP mysqli_affected_rows() 函数用法及示例

PHP MySQLi 参考手册

mysqli_affected_rows() 函数获取上一个MySQL操作中受影响的行数

定义和用法

mysqli_affected_rows()函数的作用是:如果在INSERT、UPDATE、REPLACE或DELETE查询后调用,则返回受上一操作影响的行数。

在select语句之后使用时此函数返回行数。

语法

mysqli_affected_rows($con)

参数

序号参数及说明
1

con(必需)

这是一个表示与MySQL Server的连接的对象。

返回值

PHP mysqli_affected_rows()函数返回一个整数值,该值指示受先前(SELECT,INSERT,UPDATE,REPLACE或DELETE)操作影响的行数。

如果前一个查询有错误,则此函数返回 -1。如果没有受影响的行,或者前面的查询/操作不是上面提到的查询/操作之一,则此函数返回0。

PHP版本

此函数最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。

在线示例

以下示例演示了mysqli_affected_rows()函数的用法(程序风格)

<?php
   //创建连接
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   //查询以检索employee表的所有行
   mysqli_query($con, "SELECT * FROM employee");

   //受影响的行
   $rows = mysqli_affected_rows($con);
   print("受影响的行数: ".$rows);

   //关闭连接
   mysqli_close($con);
?>

输出结果

受影响的行数: 5

在线示例

在面向对象的风格中,此函数的语法为 $con -> affected_rows,其中 $con 是连接对象-

<?php
   //创建连接
   $con = new mysqli("localhost", "root", "password", "mydb");

   //查询以检索employee表的所有行
   $con -> query("SELECT * FROM employee");

   //受影响的行数
   $rows = $con -> affected_rows;
   print("受影响的行数: ".$rows);

   //关闭连接
   $con -> close();
?>

输出结果

受影响的行数: 5

在线示例

当以下情况下,让我们检查此函数的返回值:没有(指定的)查询,并且查询有错误或不影响任何行时:

<?php
   //创建连接
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   $rows1 = mysqli_affected_rows($con);
   print("受影响的行(之前未指定操作): ".$rows1."\n");

   //查询以检索employee表的所有行
   mysqli_query($con, "SELECT * FORM employee");
   $rows2 = mysqli_affected_rows($con);
   print("受影响的行(查询有错误时): ".$rows2."\n");

   //查询以检索employee表的所有行
   mysqli_query($con, "SELECT  FIRST_NAME FROM employee WHERE AGE <=19");
   $rows3 = mysqli_affected_rows($con);
   print("受影响的行(当查询不执行任何操作时): ".$rows3."\n");

   //关闭连接
   mysqli_close($con);
?>

输出结果

受影响的行(之前未指定操作): 0
受影响的行(查询有错误时): -1
受影响的行(当查询不执行任何操作时): 0

在线示例

下面的示例演示了SELECT,UPDATE,INSERT和DELETE查询中mysqli_affected_rows函数的用法-

<?php
   //建立连接
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   //查询employee表的所有行
   mysqli_query($con, "SELECT * FROM employee where INCOME > 8000");
   print("SELECT查询影响的行: ".mysqli_affected_rows($con)."\n");

   //更新employee表的行的查询
   mysqli_query($con, "UPDATE employee set INCOME=INCOME+5000 where FIRST_NAME in ('Ramya', 'Trupthi', 'Sarmista')");
   print("UPDATE查询影响的行: ".mysqli_affected_rows($con)."\n");

   //向employee表中插入行的查询
   mysqli_query($con, "INSERT INTO employee VALUES ('Archana', 'Mohonthy', 30, 'M', 13000, 106)");
   print("INSERT查询影响的行: ".mysqli_affected_rows($con)."\n");

   //查询以删除employee表的行
   mysqli_query($con, "DELETE FROM employee where AGE > 25");
   print("DELETE查询影响的行: ".mysqli_affected_rows($con)."\n");

   //关闭连接
   mysqli_close($con);
?>

输出结果

SELECT查询影响的行: 4
UPDATE查询影响的行: 3
INSERT查询影响的行: 1
DELETE查询影响的行: 3

PHP MySQLi 参考手册