View Issue Details

IDProjectCategoryView StatusLast Update
0001053Xdebug(No Category)public2014-05-27 22:33
ReporterbromelioAssigned Toderick 
PriorityimmediateSeveritymajorReproducibilityalways
Status resolvedResolutionnot fixable 
PlatformNetbeansOSWindowsOS Version8
Product Version2.2.5 
Target VersionFixed in Version 
Summary0001053: Xdebug messes with mysqli_affected_rows($link)
DescriptionPlease see http://stackoverflow.com/q/23848434/3253673 for a detailed description (particularly the EDIT-section at the bottom).

On the attached screenshot you can see in the variables window (on the right) that affected_rows = 1 and still the "if" evaluates to "false" and Xdebug jumps to code line 92 instead of 85 upon the next "step into" (F7).

The issue has also already been encountered by other users, e.g.:
http://forums.netbeans.org/topic52344.html
http://stackoverflow.com/q/20508619/3253673
http://stackoverflow.com/a/23853490/3253673

Thank you in advance for your answer!
Steps To Reproduce-------------------------main.php (1 of 3)-------------------------------

<?php
require('dbc.inc.php');

    $fn = 'Stefan';
    $ln = 'Michael';
    $u = 'bromelio';
    $sn = '23';
    $st = 'Stadlerweg';
    $cit = 'Elsbethen';
    $pc = '5061';
    $ct = 'Austria';
    $p = 'password1';
    $sex = 'm';
    $bd = '26';
    $bm = '05';
    $by = '1983';
    $e = 'stefan.michael@hotmail.com';
    $user_img = 'example.jpg';
    $pn = '00436504167777';
    

$q = "INSERT INTO users (username, email, pass, first_name, last_name, sex, birth_day, birth_month, birth_year, phone, street, street_nr, city, zip_code, country, user_img) VALUES ('$u', '$e', '$p', '$fn', '$ln', '$sex', '$bd', '$bm', '$by', '$pn', '$st', '$sn', '$cit', '$pc', '$ct', '$user_img')";
$r = mysqli_query($dbc, $q);

if (mysqli_affected_rows($dbc) === 1) { //that's where the problem occurs: in the Debugging -> variables window "affected_rows" correctly shows "1"...

    echo 'Success';
}
else {
    echo 'Error'; //...but stepping into (F7) once more it jumps to "-1" ending up echoing "Error" instead of "Success"
}

mysqli_close($dbc);

?>






---------------------included "dbc.inc.php" (2 of 3)-------------------------

<?php

// This file contains the database access information.
// This file establishes a connection to MySQL and selects the database.
// This file defines a function for making data safe to use in queries.
// This file defines a function for hashing passwords.
// This script is begun in Chapter 3.

// Set the database access information as constants:
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'v');

// Make the connection:
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.');

// Set the character set:
mysqli_set_charset($dbc, 'utf8');

// Function for escaping and trimming form data.
// Takes one argument: the data to be treated (string).
// Returns the treated data (string).
function escape_data ($data, $dbc) {

    // Strip the slashes if Magic Quotes is on:
    if (get_magic_quotes_gpc()) $data = stripslashes($data);
    
    // Apply trim() and mysqli_real_escape_string():
    return mysqli_real_escape_string ($dbc, trim ($data));
    
} // End of the escape_data() function.

// Omit the closing PHP tag to avoid 'headers already sent' errors!


Additional Information----------------------SQL to create table "users" (3 of 3)---------------------

CREATE TABLE IF NOT EXISTS `v`.`users` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `type` ENUM('member','admin') NOT NULL DEFAULT 'member',
  `username` VARCHAR(45) NOT NULL,
  `email` VARCHAR(80) NOT NULL,
  `pass` VARCHAR(255) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  `sex` CHAR(1) NOT NULL,
  `birth_day` INT NOT NULL,
  `birth_month` INT NULL,
  `birth_year` INT NULL,
  `phone` VARCHAR(20) NULL,
  `street` VARCHAR(60) NOT NULL,
  `street_nr` VARCHAR(9) NOT NULL,
  `city` VARCHAR(45) NOT NULL,
  `zip_code` VARCHAR(45) NOT NULL,
  `country` VARCHAR(45) NOT NULL,
  `user_img` VARCHAR(65) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `username_UNIQUE` (`username` ASC),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC),
  INDEX `login` (`email` ASC, `pass` ASC))
ENGINE = InnoDB
AUTO_INCREMENT = 4
DEFAULT CHARACTER SET = utf8;
TagsNo tags attached.
Operating SystemWindows 8
PHP Version5.5.5-5.5.9

Activities

bromelio

2014-05-25 16:39

reporter  

affected_rows=1.PNG (230,486 bytes)
affected_rows=1.PNG (230,486 bytes)

derick

2014-05-27 22:33

administrator   ~0002842

Hi, thanks for this report. I investigated, and found that this is not something that Xdebug does wrong, but the MySQLi extension itself. I filed a bug report for PHP at https://bugs.php.net/bug.php?id=67348

Issue History

Date Modified Username Field Change
2014-05-25 16:39 bromelio New Issue
2014-05-25 16:39 bromelio File Added: affected_rows=1.PNG
2014-05-27 22:33 derick Note Added: 0002842
2014-05-27 22:33 derick Status new => resolved
2014-05-27 22:33 derick Resolution open => not fixable
2014-05-27 22:33 derick Assigned To => derick
2016-07-31 12:35 derick Category Debug client (console) => debugclient (debugging tool)
2016-07-31 12:35 derick Category debugclient (debugging tool) => (No Category)