Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2690 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  dupliquer un enregistrement mysql ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

dupliquer un enregistrement mysql ?

n°667175
Shurik
Posté le 08-03-2004 à 13:19:05  profilanswer
 

dans un certain cas de mon algo, je dois dupliquer tout un enregistrement d'une table (qui fait plus de 70 champs...)
 
savez vous comment faire sans avoir à realiser un SELECT * puis un INSERT into des 70 champs en se tapant à la main l'écriture des champs ?
 
merci d'avance :)
 

mood
Publicité
Posté le 08-03-2004 à 13:19:05  profilanswer
 

n°667181
Shurik
Posté le 08-03-2004 à 13:22:26  profilanswer
 

ah oui, j'avais bien une idée :

Erreur de base de données :
Erreur dans la requête :  
INSERT INTO `BL_ENTETE` SELECT * FROM `BL_ENTETE` WHERE id='125'
=> Table/alias: 'BL_ENTETE' non unique


 
mais ça ne marche pas comme vous pouvez le voir :/

n°667201
mrbebert
Posté le 08-03-2004 à 13:44:52  profilanswer
 

Eh oui, la table dans laquelle se fait l'insertion ne doit pas apparaître dans le SELECT [:proy]  
La seule solution pour ne pas tout retaper serait de créer une table temporaire avec la même structure, faire un insert ... select dans cette table, puis de nouveau un insert ... select vers la table d'origine :/

n°667209
Vinx
Posté le 08-03-2004 à 13:51:46  profilanswer
 

J'ai pas compris le pb de la table qui ne doit pas apparaître dans le select.
 
Avec Oracle :

Code :
  1. create table tempp (a number(2), b varchar2(3));
  2. insert into tempp (a, b) values (1,'a');
  3. insert into tempp select * from tempp;
  4. select * from tempp;
  5.          A B
  6. ---------- ---
  7.          1 a
  8.          1 a


 
Ca marche sans pb. Par contre attention aux clefs uniques/primaires. Je vois que tu dupliques la ligne avec l'id "125". Ca pourrait poser problème si une clef unique existe sur cette colonne.

n°667254
Shurik
Posté le 08-03-2004 à 14:06:56  profilanswer
 

l'id est un auto_increment unique :/
 
ma requette n'a pas un id='125' en dur mais un id='".$_GET['id']."'" en fait :)
 
une solution ? :/


Message édité par Shurik le 08-03-2004 à 14:08:32
n°667259
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-03-2004 à 14:09:45  profilanswer
 

Vinx a écrit :

J'ai pas compris le pb de la table qui ne doit pas apparaître dans le select.
...


bin sous mysql ( comme c'est marqué dans le titre) c'est comme ça.
 
Shurik, si c'était juste un problème d'auto_increment suffirait de ne pas faire 'select *' mais juste les bons champs ...

n°667389
Shurik
Posté le 08-03-2004 à 15:39:22  profilanswer
 

ce n'est pas uniquement un problème d'auto increment car avec juste :
 
$sql="INSERT INTO `BL_ENTETE` SELECT code_depot_new FROM `BL_ENTETE` WHERE id='".$_GET['id']."'";
 
il me sort :
INSERT INTO `BL_ENTETE` SELECT code_depot_new FROM `BL_ENTETE` WHERE id='125'
=> Table/alias: 'BL_ENTETE' non unique

n°1711195
snike
Posté le 01-04-2008 à 18:24:42  profilanswer
 

Tu as une clé primaire qui est dupliquée.
 
J'ai la meme chose . il faudrait que je reprenne tous les champs un par 1 dans ma requete SELECT
 
Au lieu de :
INSERT INTO $table (SELECT * FROM $table WHERE cle=5)
 
Je devrai mettre
INSERT INTO $table (SELECT null, chp1, chp2, chp3 FROM $table WHERE cle=5)  
null étant la colone de la clé et dans ce cas mysql recherchera la nouvelle valeur.
 
Mon soucis est que je voudrais dupliquer des enregistrement de plusieurs tables différents et je cherche un moyen pour simplifier cela, une idée ?


Message édité par snike le 01-04-2008 à 18:28:31

---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
n°1711200
snike
Posté le 01-04-2008 à 18:37:43  profilanswer
 

Ca à l'air de marcher avec cela :
 
$list="";
$sql="SHOW COLUMNS FROM feries;";
$res=mysql_query($sql);
while ($row = mysql_fetch_array($res)) {
 if ($_GET['cond'] == $row[0])
  $list.="null, ";
 else
  $list.=$row[0].", ";
}
 
où $list contien les champs de ma table dans laquelle je remplace mon champ clé par null


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  dupliquer un enregistrement mysql ?

 

Sujets relatifs
Le serveur refuse "mysql_list_tables" Pourquoi ?Connection MySql et requêtes parallèles
Performances PHP/MySQLPHP-MySQL : insert encrypt password ... Décrypter ? [Résolu]
C++ + PHP + MYSQL « Upload MP3 et lecture dans playlistModes de gestion des connexions à MySQL
comment faire pour transferer une table de access a mysql ?Impossible de me connecter sur ma base MySQL
Mysql et apache sur 2 serveurs distincts[PHP/MYSQL]Ne peut on pas faire plus simple ?
Plus de sujets relatifs à : dupliquer un enregistrement mysql ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR