requête préparée avec pdo pour un insert into ....select ....

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requête préparée avec pdo pour un insert into ....select ....

par seïna » 14 août 2008, 20:14

Bon concrètement comme ce n'est pas le même schéma d'une requête simple je ne sais pas . Par exemple est ce que je peux faire :

Code : Tout sélectionner

INSERT INTO TABLE1 (idContact,idType,titre,description) SELECT (?,?,?,?) FROM TABLE2, TABLE3 WHERE table2.type=$typeProg est ce que ça ça reste tel quel, ça m'étonnerait... AND table3.nom=$nom pour cette ligne, pareil : comment je dois faire? $stmt=$connexion->prepare($sql); $stmt->bindParam(1,je ne sais pas quoi mettre ici ); $stmt->bindParam(2,je ne sais pas quoi mettre non plus ici); $stmt->bindParam(3,$titre); $stmt->bindParam(4,$description);
Peut-être que c'est simple mais je ne vois pas comment adapter la syntaxe.

par katagoto » 14 août 2008, 19:33

et sans PDO, tu sais le faire ?

C'est à peu près pareil, il éxécute ta requête, comme s'elle n'était pas préparé, mais remplace juste tes variables...

Donc, tu n'as plus qu'à adapter...

par seïna » 14 août 2008, 19:16

C'est gentil mais je connais ce tutoriel et ça ne correspond pas à ce que je veux parce que ce ne sont que des exemples où on connaît les valeurs à rentrer : il suffit d'indiquer les variables comme dans ton exemple : $pseudo, $mot_de_passe.
Moi ce que je veux c'est construire ma requête avec des infos que je vais chercher dans d'autres tables de ma base de données avec les clés étrangères.
La requête c'est :

Code : Tout sélectionner

INSERT INTO TABLE1 (idContact,idType,titre,description) SELECT idContact, idType,'$titre','$description' FROM TABLE2, TABLE3 WHERE table2.type=$typeProg AND table3.nom=$nom
Donc je remplis les idContact et idType en allant chercher dans les tables voisines.
Le problème c'est que je ne sais pas comment faire cela en requête préparée avec les marqueurs ? pour PDO. Est ce que quelqu'un le sait? #-o

par katagoto » 14 août 2008, 15:02

Je te conseil ce tutoriel, il est très bien fait :
$requete=$connexion->prepare('INSERT INTO MaTable VALUES(:champ1, :champ2, :champ3)');
$requete->exec(array(":champ1" => $pseudo, ":champ2" => $mot_de_passe, ":champ3" => $departement));
Voilà un exemple...

requête préparée avec pdo pour un insert into ....select ...

par seïna » 14 août 2008, 14:46

J'ai cherché partout sur internet pour avoir des exemples de requêtes préparées en insert avec pdo et ils ne mettent que des exemples simples genre :

Code : Tout sélectionner

'$sql=insert into artiste (nom, prenom) VALUES (?,?) ' $stmt=$connexion->prepare($sql); $stmt->bindParam(1,$nom); $stmt->bindParam(2,$prenom);
Mais ce dont j'ai besoin c'est un insert into suivi d'un select pour aller chercher des infos dans une autre table mais je ne sais pas le faire avec les ? de la requête préparée.
Je vous mets le code sans requête préparée :

Code : Tout sélectionner

insert into autreTable (idArtiste,idProgramme, nomArtiste) select idArtiste,idProgramme,'trucmachin' from table1, table2 where artiste.nomArtiste=$nomArtiste and programmation.titreProgrammation=$titreProgrammation
Pourriez-vous me dire où je mets les ? comment je fais pour en faire un requête préparée avec les marqueurs?
Merci d'avance
:( [/quote]