Pregunta

¡Buen día!

Estoy intentando ejecutar la misma instrucción de actualización dos veces con los mismos parámetros y parece que no se ejecuta en el segundo caso:

$update_query = $this->db->connection->prepare('UPDATE `Table SET `field` = :price WHERE (`partnum` = :partnum)');

$update_query->execute(array('price' => 123, 'partnum' => test));
var_dump($update_query->rowCount()); //returns 1

// If I insert here any statement it works as expected

$update_query->execute(array('price' => 123, 'partnum' => test));
var_dump($update_query->rowCount()); //returns 0!

No tengo habilitado el caché de consultas de mysql.

¡Gracias!

¿Fue útil?

Solución

Si UPDATE no cambia los datos en una fila, MySQL no cuenta esta fila como afectada:

mysql> SELECT val FROM t_source2 WHERE id = 1;
+-----+
| val |
+-----+
|  10 |
+-----+
1 row in set (0.00 sec)

mysql> UPDATE t_source2 SET val = 1 WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE t_source2 SET val = 1 WHERE id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

La segunda declaración de UPDATE se ejecutó pero no afectó a ninguna fila desde el punto de vista de MySQL , ya que no cambió nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top