Al ejecutar una instrucción SQL, tales como INSERT INTO table
... ON DUPLICATE KEY UPDATE ... me baso en mysql_affected_rows() para determinar si se llevó a cabo una inserción o una actualización. como el sitio de MySQL en http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html, se indica:mysql_affected_rows() devuelve -1
para INSERT ... ON UPDATE copia de la llave, el valor de registros afectados es 1 si la fila se inserta como una nueva fila y 2 si una fila existente esta actualizado
Todo trabajaba bien hasta que pasaron a MySQL 5.1.16, cuando el número de consultas ahora tenían mysql_affected_rows() devolver UNO MENOS (-1)
La solución propuesta en el sitio de MySQL en http://dev.mysql.com/doc/refman/5.1/en/mysql-store-result.html es llamar la función mysql_store_result() después de cada ejecución de la función mysql_query() en una consulta de selección.
Sin embargo, PHP no parece tener dicha función definida.
¿Cómo consigo que mysql_affected_rows() funcione correctamente usando PHP y MySQL 5.1.16?
¿Está utilizando declaraciones preparadas? Por cierto, PHP tiene la función store_result - http://php.net/manual/en/mysqli.store-result.php, pero store_result es llamado después de SELECTs, no después de INSERTs. * -1 indica que la consulta arrojó un error o que, para una consulta SELECT, se invocó a mysql_affected_rows() antes de llamar a mysql_store_result() * –
También tengo este problema ... –