begin process at 2012 05 31 09:53:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Si update rien insert


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Si update rien insert

samedi 15 juillet 2006 à 22:26:51 | Si update rien insert

Florynth


Bonjour, très simple,

je veux faire un update dans une base de donnée MySQL et si l'enregistrement n'existe pas je veux l'inséré... Je suis capable de faire quelque chose (genre faire un SELECT et puis vérifier si il y a un retour, si oui Update sinon Insert) mais je veux que ça soit le plus efficace possible. On peux pas se servir de mysql_affected_rows() parce que si le update ne modifie rien ça retournera 0 même si l'enregistrement existe...

L'autre moyen que j'ai pensé c'est de faire un Insert si il y a un erreur mysql qui dit "duplicate value on index" je fais un Insert, je crois que c'est le moyen le plus propre (mon professeur de BD Oracle ma toujours dit que faut pas faire des tests préléminaires, c'est le système de BD qui doit le faire et nous on gère les erreurs...) mais je me demandais si il y a avais une solution plus adéquate.

Florynth
samedi 15 juillet 2006 à 23:57:19 | Re : Si update rien insert

rrk275

Essaye de poster dans la categorie SQL , ou au moins de chercher ^^ mais ptet que tu connaissais pas ..
http://www.sqlfr.com/codes/SQL-SERVER-PROC-STOCK-FAISANT-SOIT-UPDATE-SOIT_26595.aspx


dimanche 16 juillet 2006 à 20:24:45 | Re : Si update rien insert

davwart

l'idée du select puis update ou insert n'est pas du tout une mauvase idée.

------------------------------------- Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
mercredi 19 juillet 2006 à 11:59:45 | Re : Si update rien insert

Linkman

Mouais ... moi j'aurais eu tendance à faire un select et si mysql_num_rows >= 1 update, si non insert.
mercredi 19 juillet 2006 à 13:36:38 | Re : Si update rien insert

Florynth

Merci de votre aide,

J'ai trouvé aussi la commande REPLACE au lieu de UPDATE qui détruit l'enregistrement et le remplace par les nouvelles données. Pas besoin de spécifié de where car il le fait ou sont la PRIMARY KEY.

Mais je n'ai pas retenu cette option (je vous la donne à titre d'info) explication :

TABLE `temp`
COLUMN `id` (PRIMARY), `column2`,`column3`,`column4`,`column5`

Il faut être sur que tout les champs soit présent.

REPLACE `id`='value1',  `column2`='value2' , `column3`='value3'

Les valeurs de `column4` et `column5` seront perdu car la command REPLACE fait un DELETE avant sur la PRIMARY KEY et INSERT ensuite.

Je ne suis pas arrêté sur mon choix mais je crois que le INSERT avec la gestion d'erreur reste la meilleur solution. Je ne vois pas quel cas exactement (j'ai pas trop le temp de réfléchir d'en dévellopé un présentement) mais si le mysql_num_rows retourne 0 et que je fais un INSERT et qu'il y a une erreur et bien je ne fera pas de UPDATE à moins de tester l'erreur, donc tant qu'à tester l'erreur par la suite aussi bien le faire au début !

Et pour répéter une fois de plus ce que mon prof de BD disait :

"Il ne faut pas faire des tests préléminaires, c'est le système de BD qui doit le faire et nous on gère les erreurs..."

Florynth




Cette discussion est classée dans : insert, enregistrement, mysql, existe, update


Répondre à ce message

Sujets en rapport avec ce message

Insert (mysql et php) [ par nino69 ] Bonjour, voici un problème un peut difficile: Je lance une requête insert pour insérer un enregistrement. Jusqu'à là pas de problème:$query4 ="INSERT MySQL --> Savoir si ID 7 existe [ par ImmortalPC ] Salut, j'aimerai savoir s' il y a une technique plus appropriée que ce que j'ai fait pour savoir si ID  7 existe. $resultat = mysql_query('SELECT Tex php/mysql : apres un INSERT INTO, savoir une valeur dans la table. [ par samueldr ] Bonjour. Je ne suis pas habitué de poster ici. en fait, je crois que c'est ma premiere fois. J'ai un petit probleme en php/mysql. j'aimerais savoir, Enregistrement dans un base de donnée [ par developvbdebut ] Bonjour tout le mondeC'est la premiere foi que je touche à php et sql.Voici le code du script$liendb = mysql_connect("sql.free.fr","login","password") Pb d'INSERT , aucune erreur retournée ... [ par Blasfem ] Salut à tous, J'ai un souci, je suis en trin de me former sur le PHP et ma page d'ajout ne fonctionne pas. Pourtant le code semble correct . ? inclu Formulaire avec select et update de bdd mysql [ par arnold002 ] Bonjour à tous,J'ai un formulaire qui contient 2 champs de type select : classe et annee.Je veux associer chaque classe à chaque année et ensuite fair une question sur la getion des insert de MYSQL [ par destiny ] lo all :)Voila, en gros jdoit refaire tout un module de resa par internet (sans SSL) de mon prédécesseur!!Jviens de voir dans sa page validation info  TRIGGERS on Mysql 5.1 [ par irkiouak ] Bonjour ruche des developpeurs,en Mysql 5.1.xx,J'ai deux tables :    EQUIPE:         equipe: le nom unique de chaque équipe.   PERS Boucle (while) de Update [ par crislemon ] Bonjour, Voici mon probleme, j'aimerai effectuer des update en boucle sur une des mes table. en bas c le debut de mon code... if($_POST["statsjoueur" checkbox et update [ par refkaben ] Bonjour à tous!j'ai un pb avec le checbox, en fait je veux faire un update selon que le checkbox soit checked mais ça ne marche pas, je vois que l'upd


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales