Bug #62348 [Com]: mysqli query does not return false on DELETE
Edit report at https://bugs.php.net/bug.php?id=62348&edit=1
ID: 62348
Comment by: adamjonr at gmail dot com
Reported by: valentiny510 at yahoo dot es
Summary: mysqli query does not return false on DELETE
Status: Open
Type: Bug
Package: MySQLi related
Operating System: XP
PHP Version: 5.4.4
Block user comment: N
Private report: N
New Comment:
The mysqli query returns false for failed queries and true for successful queries
that don't involve SELECT, SHOW, DESCRIBE or EXPLAIN (i.e., DELETE queries return
true when "successful".) DELETE queries can impact 0, 1, or multiple rows, and
their completion without error is, at least in the terms of the mysqli library,
considered a success.
http://www.php.net/manual/en/mysqli.query.php
If you want to alter the flow of your script depending on whether a row has been
deleted, you can use $mysqli->affected_rows to retrieve the number of rows
impacted by the last DELETE, INSERT, or UPDATE statement:
http://php.net/manual/en/mysqli.affected-rows.php
Previous Comments:
------------------------------------------------------------------------
[2012-06-18 00:14:46] valentiny510 at yahoo dot es
Description:
------------
Honestly, i'm not realy sure if is php or mysql thing..
Look at the test script
NOTE: id 2 DOES NOT exists and MYSQL_REPORT_ALL does nor report anything :S
Test script:
---------------
mysqli_report( MYSQLI_REPORT_ALL );
$db = new mysqli('.', 'root', 'pass', 'database');
if (!$db->query('DELETE FROM sessions WHERE id = 2'))
echo 'Cannot delete session: ', $db->error;
else
echo 'DELETED';
Expected result:
----------------
Cannot delete session: "some error from mysqli"
Actual result:
--------------
DELETED
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62348&edit=1
Thread (5 messages)