2009-11-30 7 views
3

mysql_affected_rows est d'obtenir le nombre de lignes affectées dans l'opération MySQL précédente, mais je veux obtenir des lignes affectées dans l'opération MySQL précédente. Par exemple:Comment obtenir des lignes affectées dans une opération MySQL précédente?

update mytable set status=2 where column3="a_variable"; 

Avant cette opération, l'état de certaines lignes est déjà 2, et je veux obtenir des lignes affectées par la dernière MySQL, vous ne pouvez pas l'obtenir en émettant une requête de

select * from mytable where status=2 

Alors, comment faire ce travail?

Répondre

5

Il peut être efficacement et simplement réalisé ce qui suit:.

select * from mytable where column3="a_variable" and status != 2; 
update mytable set status=2 where column3="a_variable"; 

le résultat de la première requête sont les lignes qui vont changer, et la deuxième requête les change réellement.

S'il s'agit d'un système haute performance, vous devrez peut-être faire particulièrement attention aux transactions pour éviter qu'une nouvelle ligne ne glisse entre ces deux requêtes.

-1

La mise en œuvre et la fonction que vous demandez est de PHP, s'il vous plaît étiqueter votre question avec PHP. En réponse à votre question tho, afin de faire ce que vous suggérez, vous devez conserver une copie de la table SQL avant le changement et le comparer avec le tableau après le changement, la différence qui en résulte serait votre répondre. Vous pouvez le faire en PHP en chargeant simplement le contenu de la table dans un tableau et en comparant les tableaux avant et après, toute nouvelle donnée est votre réponse (Veuillez noter:il est fortement déconseillé de le faire car il peut causer une augmentation de la charge sur votre serveur en fonction de la quantité de données stockées dans les tableaux)

+0

Aucune raison de supposer que la question est spécifique à PHP. Vous proposez n'est pas acceptable du point de vue de la performance. –

Questions connexes