English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico do PHP

Tutorial avançado do PHP

PHP & MySQL

Manual de referência do PHP

Uso e exemplo da função PHP mysqli_stmt_affected_rows()

PHP MySQLi Referência

A função mysqli_stmt_affected_rows() do PHP retorna o número total de linhas alteradas, excluídas ou inseridas pela última sentença executada.

Definição e uso

mysqli_stmt_affected_rows()A função retorna o número de linhas afetadas pela última sentença executada (alteração, exclusão, inserção).

Só após a chamada deste função em uma sentença INSERT, UPDATE ou DELETE, esta função pode funcionar corretamente. Se você precisar saber o número de linhas afetadas por uma consulta SELECT, você precisa usar mysqli_stmt_num_rows() Função.

Sintaxe

mysqli_stmt_affected_rows($stmt)

Parâmetro

Número sequencialParâmetros e descrição
1

stmt (obrigatório)

Este é o objeto que representa a sentença de execução da consulta SQL.

Valor de retorno

A função mysqli_stmt_affected_rows() do PHP retorna um valor inteiro que indica o número de linhas afetadas pela operação anterior (INSERT, UPDATE, REPLACE ou DELETE).

Se a sentença tiver erro, esta função retorna-1Se não houver linhas afetadas, esta função retorna0

versão do PHP

Esta função foi inicialmente desenvolvida na versão do PHP5引入的,并且可以在所有更高版本中使用。

Exemplo online

假设我们已经在MySQL数据库中创建了一个名为employee的表,其内容如下:

mysql> select * from employee;
+------------+--------------+------+------+--------+
| FIRST_NAME | LAST_NAME        | AGE        | SEX        | INCOME        |
+------------+--------------+------+------+--------+
| Vinay          | Bhattacharya      |   20 | M        |  21000 |
| Sharukh        | Sheik             |   25 | M        |  23300 |
| Trupthi        | Mishra            |   24 | F        |  51000 |
| Sheldon        | Cooper            |   25 | M        |   2256 |
| Sarmista        | Sharma            |   28 | F        |  15000 |
+------------+--------------+------+------+--------+
5 rows in set (0.00 sec)

以下示例演示了mysqli_stmt_affected_rows()函数的用法(面向过程风格),执行update更新数据后,返回受影响的行数:

<?php
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   $stmt = mysqli_prepare($con, "UPDATE employee set INCOME=INCOME-? where INCOME>=?");
   mysqli_stmt_bind_param($stmt, "si", $reduct, $limit);
   $limit = 20000;
   $reduct = 5000;
   //Executar instrução
   mysqli_stmt_execute($stmt);
   print("已更新的记录......\n");
   //Linhas afetadas
   $count = mysqli_stmt_affected_rows($stmt);
   //Fim da instrução
   mysqli_stmt_close($stmt);
   //Fechar conexão
   mysqli_close($con);
   print("受影响的行 $count");
?>

Resultados de saída

已更新的记录......
Linhas afetadas 3

Exemplo online

在面向对象风格中,此函数的语法为$con-> affected_rows;。以下是面向对象风格中此函数的示例,执行delete删除数据后,返回受影响的行数:

<?php
   //建立连接
   $con = new mysqli("localhost", "root", "password", "mydb");
   $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Criar tabela.....\n");
   $con -> query("insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Inserir registros.....\n");
   $stmt = $con -> prepare("DELETE FROM Test WHERE Name in(?, ?)");
   $stmt -> bind_param("ss", $name1, $name2);
   $name1 ='Raju';
   $name2 ='Rahman';
   print("Registros deletados.....\n");
   //Executar instrução
   $stmt->execute();
   //Linhas afetadas
   $count = $stmt ->affected_rows;
   print("Número de linhas afetadas ").$count;
   //Fim da instrução
   $stmt->close();
   //Fechar conexão
   $con->close();
?>

Resultados de saída

Criar tabela.....
Inserir registros.....
Registros deletados.....
Número de linhas afetadas 2

Exemplo online

Se a consulta não afetar nenhuma linha, vamos verificar seu valor de retorno-

<?php
   $con = @mysqli_connect("localhost", "root", "password", "mydb");
   mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Criar tabela.....\n");
   mysqli_query($con, "insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Inserir registros.....\n");
   $stmt = mysqli_prepare($con, "DELETE FROM test WHERE Age<?");
   mysqli_stmt_bind_param($stmt, "i", $num);
   $num = 8;
   //Executar instrução
   mysqli_stmt_execute($stmt);
   //Linhas afetadas
   $count = mysqli_stmt_affected_rows($stmt);
   print("Linhas afetadas (quando a consulta não executa nenhuma operação): ").$count;
   //Fim da instrução
   mysqli_stmt_close($stmt);
   //Fechar conexão
   mysqli_close($con);
?>

Resultados de saída

Criar tabela.....
Inserir registros.....
Linhas afetadas (quando a consulta não executa nenhuma operação): 0

PHP MySQLi Referência