PHP | mysqli_stmt_affected_rows() Function

PHP mysqli_stmt_affected_rows() Function


Hello folks! welcome back to a new edition of our tutorial on PHP. In this tutorial guide, we are going to be studying about the PHP mysqli_stmt_affected_rows() Function.

The built-in mysqli_stmt_affected_rows() function in PHP returns the number of rows affected (changed, deleted, inserted) by the recently executed statement.

This PHP function works properly only if invoked after INSERT, UPDATE, or DELETE statements. If you need to know the number of rows affected by the SELECT query, you need to use the built-in PHP mysqli_stmt_num_rows() function.

Syntax

Following below is the syntax to use this function -

mysqli_stmt_affected_rows($stmt);


Parameter Details

Sr.NoParameter & Description
1

stmt(Mandatory)

This is an object representing a statement executing an SQL query.


Return Value

This built-in PHP function returns an integer value indicating the number of rows affected by the previous (INSERT, UPDATE, REPLACE or DELETE) operation.

If the statement has an error this function returns -1. If there are no affected rows, this function returns 0.

PHP Version

This PHP function was first introduced in PHP version 5 and works in all the later versions.

Example1

Assume we have created a table named employee in the MYSQL database with the following contents $minus;

mysql> select * from employee;
+------------+--------------+------+------+--------+
| FIRST_NAME | LAST_NAME    | AGE  | SEX  | INCOME |
+------------+--------------+------+------+--------+
| Kennedy    | Nkpara       |   27 | M    |  21000 |
| Paul       | Francia      |   30 | M    |  23300 |
| Queen      | Douglas      |   25 | F    |  51000 |
| Stephanie  | Francis      |   24 | F    |   2256 |
| Precious   | Amah         |   25 | F    |  15000 |
+------------+--------------+------+------+--------+
5 rows in set (0.00 sec)

The following below is an example which demonstrates the usage of the built-in PHP mysqli_stmt_affected_rows() function (in a procedural style) -

<?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;

   //Executing the statement
   mysqli_stmt_execute($stmt);
   print("Records Updated......\n");

   //Affected rows
   $count = mysqli_stmt_affected_rows($stmt);

   //Closing the statement
   mysqli_stmt_close($stmt);

   //Closing the connection
   mysqli_close($con);

   print("Rows affected ".$count);
?>

Output

When the above code is executed, it will produce the following result -

Record Updated......
Rows affected 3

Example2

In an object oriented style the syntax of this function is $con->affected_rows(); Following is the example of this function in an object oriented style $minus;

<?php
   //Creating a connection
   $con = new mysqli("localhost", "root", "password", "mydb");

   $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT)");
   print("Table Created.....\n");
   $con -> query("insert into Test values('Kennedy', 27),('Paul', 30),('Justice', 28)");
   print("Records Inserted.....\n");

   $stmt = $con -> prepare( "DELETE FROM Test WHERE Name in(?, ?)");
   $stmt -> bind_param("ss", $name1, $name2);
   $name1 = 'Kennedy';
   $name2 = 'Paul';
   print("Records Deleted.....\n");

   //Executing the statement
   $stmt->execute();

   //Affected rows
   $count = $stmt ->affected_rows;
   print("Rows affected ".$count);

   //Closing the statement
   $stmt->close();

   //Closing the connection
   $con->close();

?>

Output

When the above code is executed, it will produce the following result -

Table Created.....
Records Inserted.....
Records Deleted.....
Rows affected 2

Example3

Let us check the return values of this if the query does not affect any rows -

<?php
   $con = @mysqli_connect("localhost", "root", "password", "mydb");

   mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT)");
   print("Table Created.....\n");
   mysqli_query($con, "insert into Test values('Kennedy', 27),('Paul', 30),('Justice', 28)");
   print("Records Inserted.....\n");

   $stmt = mysqli_prepare($con, "DELETE FROM test where Age<?");
   mysqli_stmt_bind_param($stmt, "i", $num);
   $num = 8;
   //Executing the statement
   mysqli_stmt_execute($stmt);
   //Affected rows
   $count = mysqli_stmt_affected_rows($stmt);
   print("Rows affected (when query does nothing): ".$count);

   //Closing the statement
   mysqli_stmt_close($stmt);
   //Closing the connection
   mysqli_close($con);

?>

Output

When the above code is executed, it will produce the following result below -

Table Created.....
Records Inserted.....
Rows affected (when query does nothing): 0


Alright guys! This is where we are going to be rounding up for this tutorial post. In our next tutorial, we are going to be discussing about the mysqli_stmt_attr_get() Function in PHP.

Do feel free to ask your questions where necessary and we will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.

Do follow us on our various social media handles available and also subscribe to our newsletter to get our tutorial posts delivered directly to your emails.

Thanks for reading and bye for now.