English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
mysqli_stmt_affected_rows($stmt)
Número sequencial | Parâmetros e descrição |
---|---|
1 | stmt (obrigatório) Este é o objeto que representa a sentença de execução da consulta SQL. |
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。
Esta função foi inicialmente desenvolvida na versão do PHP5引入的,并且可以在所有更高版本中使用。
假设我们已经在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
在面向对象风格中,此函数的语法为$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
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