update num_rows method from delete affected_rows affected php netbeans mysqli rows-affected

num_rows - php mysqli update affected rows



Netbeans Xdebug: mysqli_affected_rows devuelve "-1" cuando debería ser "1" (1)

He probado su código y muestra el éxito cuando se inserta un nuevo registro en la base de datos. Vuelva a verificar su base de datos para garantizar la inserción de datos.

mysqli_affected_rows: valor de retorno

- 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)

Me sorprende por qué el siguiente código agrega con éxito una nueva fila a mi tabla de base de datos, mientras que mysqli_affected_rows($dbc) devuelve "-1", por lo tanto un error, en 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 }

Para fines de prueba: SQL para crear "usuarios" de tablas:

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;

¡Estaría muy agradecido por tus sugerencias!

EDITAR: Mientras tanto, he podido aislar el problema un poco más: el código funciona bien directamente en un navegador web, es solo en Netbeans / Xdebug que mysqli_affected_rows($dbc) en la línea correspondiente primero devuelve "1" correctamente, pero después de entrar en la siguiente línea (F7) cambia repentinamente a "-1" y, por lo tanto, salta erróneamente a la rama "else" devolviendo un error, aunque los datos se escriben correctamente en la base de datos. Aparentemente no soy el único que tiene este problema .

Estas son mis configuraciones de Xdebug en php.ini, pero creo que son correctas.

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"

¿Alguna pista de alguien?