Netbeans Xdebug: mysqli_affected_rows возвращает «-1», когда он должен быть «1»,

Я озадачен тем, почему следующий код успешно добавляет новую строку в мою таблицу базы данных, а mysqli_affected_rows($dbc) возвращает «-1», что приводит к ошибке в signup.php:

dbc.inc.php:

 DEFINE ('DB_USER', 'root'); DEFINE ('DB_PASSWORD', ''); DEFINE ('DB_HOST', 'localhost'); DEFINE ('DB_NAME', 'v'); $dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.'); mysqli_set_charset($dbc, 'utf8'); 

signup.php:

 require('dbc.inc.php'); //code to set variables for the following SQL statement $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) or die(msg(0, "Error connecting to the database")); if (mysqli_affected_rows($dbc) === 1) { //Returns 'false' despite one row having been added... echo "Success"; } else { echo "Error"; //...resulting in "Error" being echoed } 

Для целей тестирования: SQL для создания «пользователей» таблицы:

 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; 

Я был бы очень благодарен за ваши намеки!

EDIT: Я тем временем смог еще немного изолировать проблему: код работает нормально, прямо в веб-браузере, только в Netbeans / Xdebug mysqli_affected_rows($dbc) в соответствующей строке сначала правильно возвращает «1», но после перехода в следующую строку (F7) внезапно изменяется на «-1» и, таким образом, неправильно переходит на «else» -отчет, возвращающий ошибку, хотя данные правильно записываются в базу данных. По-видимому, я не единственный, у кого есть эта проблема .

Это мои настройки Xdebug в php.ini, но я думаю, что они верны.

 zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ;xdebug.profiler_append = 0 xdebug.profiler_enable = 1 ;xdebug.profiler_enable_trigger = 0 ;xdebug.profiler_output_dir = "C:\xampp\tmp" ;xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "localhost" xdebug.remote_port = 9000 ;xdebug.trace_output_dir = "C:\xampp\tmp" 

Какие-нибудь подсказки кто-нибудь?

    Я проверил ваш код, и это echos Успех, когда новая запись вставлена ​​в базу данных, пожалуйста, перепроверить свою базу данных, чтобы обеспечить ввод данных

    mysqli_affected_rows: возвращаемое значение

      - An integer > 0 indicates the number of rows affected. - 0 indicates that no records where affected & -1 indicates that the query returned an error(that may be you case)