Forum     S'enregistrer     Se connecter     Faq    


        

     AdoJeunZ -> Passions -> Sciences, Technologies, Informatique, Internet -> Sql : insert into multiple rows ?

Devenir membre !

Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses
Sql : insert into multiple rows ?
Auteur Message
velvet n/a
nous étions jeunes

Avatar

Autorisation : Membre
Nb de messages : 1958
Posté le : Mer 05 Sep 2007, 9:11    

Je pose cette question ici 1)pour la réactivité 2)sachant qu'il y a de rares développeurs dans le coin parfois.

j'ai la requête suivante :

Citer
insert into pae
(PRENOMSTAG, NOMSIGN, NOMTUT, TELTUT, MAILTUT, ADRLIEU, ADRENVCONV, DATED, DATEF, DESCRIPTIF, NOM_STAGIAIRE, ID_STAGIAIRE)
values
('Herve2', 'Montier', 'Montier', '0678513495', 'g-montier@carabosse.com', '12 rue du taf', '12 rue du taf', '111007', '121207', 'stage de stagiation', 'Bricka', INCREM.nextval);
(PRENOMSTAG, NOMSIGN, NOMTUT, TELTUT, MAILTUT, ADRLIEU, ADRENVCONV, DATED, DATEF, DESCRIPTIF, NOM_STAGIAIRE, ID_STAGIAIRE)
values
('Herve3', 'Montier', 'Montier', '0678513495', 'g-montier@carabosse.com', '12 rue du taf', '12 rue du taf', '111007', '121207', 'stage de stagiation', 'Bricka', INCREM.nextval);



D'après mes souvenirs la syntaxe est juste, mais malgré ça Oracle express me renvoie une erreur "ORA-00911: caractère non valide".


Généralement il me semblait que c'était possible de faire un ajout multiple en une seule requête.
Quelqu'un a une idée ?
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Aldarone Masculin
Marcel Mamour.

Avatar

Autorisation : Admin
Nb de messages : 12300
Posté le : Mer 05 Sep 2007, 9:16    

Je parie qu'il gueule à cause du @ mrgreen.gif
 Utilisateur en ligne Envoyer un message privé Haut de page Bas de page 
 
velvet n/a
nous étions jeunes

Avatar

Autorisation : Membre
Nb de messages : 1958
Posté le : Mer 05 Sep 2007, 9:21    

Non, j'ai même une contrainte sur cette colonne qui m'oblige à l'avoir
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Nod Masculin



Autorisation : Membre
Nb de messages : 143
Posté le : Mer 05 Sep 2007, 12:46    

Essaye de convertir tes chaines en UTF8 avant de les entrer dans ta base.
Sinon, plutôt que t'utiliser du simple SQL, essaye PDO, ca facilite la vie.
Pour ton exemple ca donnerait:


Citer

<?php
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "Connecté\n";
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
$dbh->exec("insert into salarychange (id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();

} catch (Exception $e) {
$dbh->rollBack();
echo "Échec : " . $e->getMessage();
}
?>



ou


Citer
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (nom, valeur) VALUES (:nom, :valeur)");
$stmt->bindParam(':nom', $nom);
$stmt->bindParam(':valeur', $valeur);

// insertion d'une ligne
$nom = 'one';
$valeur = 1;
$stmt->execute();

// insertion d'une autre ligne avec des valeurs différentes
$nom = 'two';
$valeur = 2;
$stmt->execute();
?>



(A savoir que pour Oracle tu peux même entrer des des images comme ceici:)

Citer
<?php
$db = new PDO('oci:', 'scott', 'tiger');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) " .
"VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
$id = get_new_id(); // fonction pour allouer un nouvel ID

// assumons que nous récupérons un fichier depuis un formulaire
// vous pouvez trouver plus de détails dans la documentation de PHP

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

$stmt->beginTransaction();
$stmt->execute();
$stmt->commit();
?>



Je te laisse le lien avec les exemples car il sont mieux mis en page que par la balise de FSB :/
http://fr.php.net/pdo/

EDIT: Ha oui, essaye plutôt une apostrophe simple, ca devrait mieux marcher. winkle.gif
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
velvet n/a
nous étions jeunes

Avatar

Autorisation : Membre
Nb de messages : 1958
Posté le : Mer 05 Sep 2007, 16:00    

La variable NLS_LANGUAGE définit automatiquement la langue et l'encodage à utiliser en FR-utf8.
C'est gentil pour pdo mais c'est pas ce que je veux. Bien sûr que les appels et insert à la base sont fonctionnels, mais moi je veux créer un script sql, et là je bosse en quelque sorte sur le début du squelette de ce script.
Un script adapté à un maximum de plateformes de gestion de bdd.
Le type blob est reconnu par la plupart des nouvelles versions de bdd, pas qu'oracle winkle.gif


Citer : Angellore
EDIT: Ha oui, essaye plutôt une apostrophe simple, ca devrait mieux marcher. winkle.gif



Où ça ?
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Nod Masculin



Autorisation : Membre
Nb de messages : 143
Posté le : Mer 05 Sep 2007, 16:59    

Double, autant pour moi winkle.gif


Citer

insert into pae
("PRENOMSTAG, NOMSIGN, NOMTUT, TELTUT, MAILTUT, ADRLIEU, ADRENVCONV, DATED, DATEF, DESCRIPTIF, NOM_STAGIAIRE, ID_STAGIAIRE")
values
("'Herve2', 'Montier', 'Montier', '0678513495', 'g-montier@carabosse.com', '12 rue du taf', '12 rue du taf', '111007', '121207', 'stage de stagiation', 'Bricka', INCREM.nextval");
("PRENOMSTAG, NOMSIGN, NOMTUT, TELTUT, MAILTUT, ADRLIEU, ADRENVCONV, DATED, DATEF, DESCRIPTIF, NOM_STAGIAIRE, ID_STAGIAIRE")
values
("'Herve3', 'Montier', 'Montier', '0678513495', 'g-montier@carabosse.com', '12 rue du taf', '12 rue du taf', '111007', '121207', 'stage de stagiation', 'Bricka', INCREM.nextval");



Nan mais l'exemple que je t'ai donné est sépcifique à Oracle. Pour les autres SGDB c'est:


Citer

<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
$id = get_new_id(); // fonction pour allouer un nouvel ID

// assumons que nous récupérons un fichier depuis un formulaire
// vous pouvez trouver plus de détails dans la documentation de PHP

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

$db->beginTransaction();
$stmt->execute();
$db->commit();
?>



Sinon vérifie que tes chemins d'appels sont corrects (que le nom des dossiers ne contiennent pas de caractère non ASCI) parce que j'ai eu ce problème avec Django, le framework Python. :/
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
velvet n/a
nous étions jeunes

Avatar

Autorisation : Membre
Nb de messages : 1958
Posté le : Mer 05 Sep 2007, 17:26    

oui et ?
SQL, pas php ni python ni rien d'autre.
Double-quotes = erreur sql.
Pas de chemins d'appel vu que je bosse en local sur ma base, dans un module de commandes sql.
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Genova n/a
Welcome to the MACHINE !

Avatar

Autorisation : Membre
Nb de messages : 6272
Posté le : Mer 05 Sep 2007, 18:23    

Angellore : SQL != PHP. Php implémente juste une couche d'accès à oracle mais ça s'arrète là.

Ensuite d'après ce que je vois ta syntaxe est incorecte, tu as deux choix pour les requêtes INSERT * :

Citer
INSERT INTO ta_table (champ1, champ2, ..., champN) VALUES (valeur1, valeur2, ..., valeurN);
INSERT INTO ta_table (champ1, champ2, ..., champN) VALUES (valeur1, valeur2, ..., valeurN);
INSERT INTO ta_table (champ1, champ2, ..., champN) VALUES (valeur1, valeur2, ..., valeurN);


Ou bien

Citer
INSERT INTO ta_table (champ1, champ2, ..., champN) VALUES
(valeur1, valeur2, ..., valeurN),
(valeur1, valeur2, ..., valeurN),
(valeur1, valeur2, ..., valeurN);

 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Nod Masculin



Autorisation : Membre
Nb de messages : 143
Posté le : Mer 05 Sep 2007, 19:38    

C'est vrai que j'ai toujours travaillé avec PHP, vu que j'ai jamais vu l'utilité d'utiliser SQL seul à part en économie :/
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Genova n/a
Welcome to the MACHINE !

Avatar

Autorisation : Membre
Nb de messages : 6272
Posté le : Mer 05 Sep 2007, 19:51    

Ben tu peux utiliser avec n'importe quel langage en fait, c'est juste une base de donnée auquel tu veux accéder avec ton programme. Que ce soit en C, en python ou en PHP.
 Utilisateur hors ligne Envoyer un message privé Haut de page Bas de page 
 
Vous ne pouvez pas poster de réponses

     AdoJeunZ -> Passions -> Sciences, Technologies, Informatique, Internet -> Sql : insert into multiple rows ?


  Procès-Verbal de Dépôt
Mentions légales et copyright, notre charte.

Tous les logos et marques sont des Propriétés respectives.
Tout copie entiere ou partielle de ce site peuvent faire l'objet de poursuite judiciaire.
Les propos tenus sont de la responsabilité de leurs auteurs.


Thème basé sur un skin dgfX FSB : Merci à Nérévare
Powered by Fire-Soft-Board v1.0.9 © 2004 - 2009 Groupe FSB

Liens :
Plan du Forum - Sapeurs pompiers - ActuDZ - Moto 50cc - Forum moto 50cc - Recette-dessert.com


Nous contacter / Devenir partenaire !