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] johan...@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