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版本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