8797 sujets

Développement web côté serveur, CMS

Salut tout le monde,

Dur de faire un titre simple pour un problème simple ^^

Voilà, j'utilise dans mon code PHP une requête mysql du type "insert into `table` (id, nombre) Values (3,1) on duplicate key update `nombre`=`nombre`+1", sans la moindre difficulté...

Mais il s'avère que j'aimerais savoir laquelle des deux opérations a été faites et je sais pas comment faire. (si le Mysql a fait un insert ou un update)

Je soupçonne un truc idiot, mais j'ai pas trouvé...

Merci d'avance à celui/celle/ceux qui a/ont/trouve/trouveront une piste voire une solution Smiley murf
salut

peu connue Smiley cligne

juste après l'exécution de la requète qui t'interresse

$result=mysql_affected_rows();

print $result; ou autre hein Smiley cligne tu fais ce que tu veux avec le résultat
Non, mysql_affected_rows (que je connais et utilise parfois) permet de savoir combien de ligne ont été affecté. Dans mon cas, il retournera 1 quoiqu'il arrive.

Ce qui m'intéresse, c'est de savoir s'il a fait un update ou un insert dans le cas d'une requête de type "insert into ... on duplicate key update ...".

En gros, un moyen de savoir si oui ou non la clé primaire (qui est double dans mon cas précis, mais je suppose que ça change rien) était déjà existante ou non.



edit : Idiote ^^' S'il fait un update, ça va faire 2 query (insert qui a échoué puis update)... C'est une excellente nouvelle ça !
Modifié par Lothindil (10 May 2012 - 21:51)
jb_gfx a écrit :
last insert id

Non, ma clé primaire n'est pas un champs avec auto-increment et last_insert_id retourne 0 dans ce cas-là.

a écrit :
The ID generated for an AUTO_INCREMENT column by the previous query on success, 0 if the previous query does not generate an AUTO_INCREMENT value, or FALSE if no MySQL connection was established.