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: valentiny510 at yahoo dot es
Reported by: valentiny510 at yahoo dot es
Summary: mysqli query does not return false on DELETE
Status: No Feedback
Type: Bug
Package: MySQLi related
Operating System: XP
PHP Version: 5.4.4
Block user comment: N
Private report: N
New Comment:
cite from http://dev.mysql.com/doc/refman/5.0/es/delete.html:
"The IGNORE keyword causes MySQL to ignore all errors during the process of deleting rows.
(Errors encountered during the parsing stage are processed in the usual manner.) Errors that are
ignored due to the use of IGNORE are returned as warnings."
So mysql return some warnings if I dont use the word IGNORE..
Also say:
"For the single-table syntax, the DELETE statement deletes rows from tbl_name and returns a
count of the number of deleted rows."
I wonder if is posible to return that number in the same query..
Will be easier without calling $db->affected_rows
Previous Comments:
------------------------------------------------------------------------
[2013-02-18 00:35:48] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
------------------------------------------------------------------------
[2012-06-18 22:57:59] johannes@php.net
Please try using this snapshot:
http://snaps.php.net/php5.4-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
The query is successfull, een if no data is deleted/changed.
------------------------------------------------------------------------
[2012-06-18 07:13:30] adamjonr at gmail dot com
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
------------------------------------------------------------------------
[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)