2016-07-04 1 views
0

J'ai lu environ une douzaine de messages sur les actions de affected_rows. Je suis ici maintenant avec un affected_rows retournant 1 fois et 0 autres fois. Je comprends qu'il rapporte des changements. Une mise à jour qui ne met à jour rien retournera un 0. Les changements sont faits - je peux le voir dans la base de données. Il n'y a pas d'erreurs Tous les appels sont testés.mysqli-affected_rows et la mise en mémoire tampon

J'ai essayé un store_result() avant un accès affected_rows. Pas d'aide. Quelque part, j'ai lu que la mise en mémoire tampon affecte son comportement. Ma question est, pouvez-vous «flush» après une mise à jour? Comment? Voici quelques abbr. Code:

$conn = db_connect(); 
$sth = $conn->prepare($mysql_update); 
$sth->bind_param("siii", $name, $age, $wt, $ht);   
$sth->execute(); 
$sth->store_result(); 
$update_count = $sth->affected_rows; 

php 5.6, MySQL 10.1.10-MariaDB (la suite xampp)

supplémentaires: Je ne ferme pas avant que je demande combien.

Répondre

0

Vous venez de confondre num_rows, qui est affecté par une requête sans tampon, avec affcted_rows, ce qui n'est pas le cas (car il n'y a rien à bufferiser). Ce dernier est toujours disponible, et donc si vous obtenez 0, alors aucun changement n'a été fait.

+0

Merci. Toujours confus et toujours reconnaissant. Je ne pouvais pas comprendre. J'ai décidé d'un patch. une relecture. – user116032