PHP mysqli_stmt::$affected_rows / mysqli_stmt_affected_rows() 函数返回受上次 SELECT 影响的行数, INSERT、UPDATE 或 DELETE 查询。
语法
//面向对象风格
$mysqli_stmt->affected_rows;
//面向过程风格
mysqli_stmt_affected_rows(statement)
参数
statement | 必填。 仅适用于面向过程风格:指定 mysqli_stmt_init() 返回的 mysqli_stmt 对象。 |
返回值
返回整数可以解释如下:
- 大于零的整数表示受影响或检索的行数。
- 零表示 UPDATE 语句没有更新任何记录,没有行与查询中的 WHERE 子句匹配,或者尚未执行任何查询。
- -1 表示查询返回错误,或者对于 SELECT 查询,在调用 mysqli_stmt_store_result 之前调用此函数()。
注意:如果受影响的行数大于最大int值(PHP_INT_MAX),则受影响的行数将以字符串形式返回。
示例:面向对象风格
下面的示例显示了mysqli_stmt::$affected_rows属性的用法。
<?php
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_affected_rows) {
echo "Failed to connect to MySQL: ". $mysqli->connect_error;
exit();
}
//执行select语句,将结果存储在
//内部缓冲区并显示受影响的行
$stmt = $mysqli->prepare("SELECT * FROM Employee");
$stmt->execute();
$stmt->store_result();
echo "Affected rows (SELECT): ". $stmt->affected_rows;
//执行删除语句并显示受影响的行
$stmt = $mysqli->prepare("DELETE FROM Employee WHERE Age>60");
$stmt->execute();
echo "Affected rows (DELETE): ". $stmt->affected_rows;
//关闭连接
$mysqli->close();
?>
上述代码的输出将类似于:
Affected rows (SELECT): 478
Affected rows (DELETE): 13
示例:面向过程风格
下面的示例显示mysqli_stmt_affected_rows()的用法 函数。
<?php
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_affected_rows()) {
echo "Failed to connect to MySQL: ". mysqli_connect_error();
exit();
}
//执行select语句,将结果存储在
//内部缓冲区并显示受影响的行
$stmt = mysqli_prepare($mysqli, "SELECT * FROM Employee");
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
echo "Affected rows (SELECT): ". mysqli_stmt_affected_rows($stmt);
//执行删除语句并显示受影响的行
$stmt = mysqli_prepare($mysqli, "DELETE FROM Employee WHERE Age>60");
mysqli_stmt_execute($stmt);
echo "Affected rows (DELETE): ". mysqli_stmt_affected_rows($stmt);
//关闭连接
mysqli_close($mysqli);
?>
上述代码的输出将类似于:
Affected rows (SELECT): 478
Affected rows (DELETE): 13