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

Reply via email to