MySql : Insert avec le contenu des variables

Fermé
miltonis Messages postés 238 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 30 septembre 2022 - 8 mars 2016 à 10:56
miltonis Messages postés 238 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 30 septembre 2022 - 8 mars 2016 à 14:53
Bonjour,

Afin d'insérer des données dans une table que j'ai créé, en farfouillant j'ai pondu ce petit bout de code :

$recup = "Nomdefamille Prénom<em>Nom de ma société</em>";

//First explode : Prenom-Nom and Societe
$recup = explode('<em>', $recup);

//Second explode : Prenom and Nom
$name = explode(' ', utf8_decode($recup[0]));

//$nom receive Nom
$nom = $name[0];

//$prenom receive Prenom
$prenom = $name[1];

//$con receive societe
$com = utf8_decode($recup[1]);

//Insertion dans la Base
//while ($maboucle == true) {
$bdd->exec('INSERT INTO signataires(id, nom, prenom, societe, email) VALUES(\'\', '.$nom.', '.$prenom.', '.$com.', \'\')');
//}


La connexion à la base se fait bien. Pour l'insertion dans la base, si je remplace les variables par du texte, ça fonctionne. Dès que je remets les variables, ça ne marche plus ! :/
Pourquoi ? Ai-je oublié quelque chose ?

merci pour votre aide et bonne journée !

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
8 mars 2016 à 11:18
Salut,

Les valeurs dans ta requête sql doivent être entourées de quote.
Différentes façons de faire plus ou moins lisible :
// avec des quotes simple
$bdd->exec('INSERT INTO signataires(id, nom, prenom, societe, email) VALUES(\'\', \''.$nom.'\', \''.$prenom.'\', \''.$com.'\', \'\')');

// avec des doubles quotes sans concaténation
$bdd->exec("INSERT INTO signataires(id, nom, prenom, societe, email) VALUES('', '$nom', '$prenom', '$com', '')");

// avec des doubles quotes avec concaténation
$bdd->exec("INSERT INTO signataires(id, nom, prenom, societe, email) VALUES('', '" . $nom . "', '" . $prenom . "', '" . $com . "', '')");


Dans l'idéal, il faudrait plutôt utiliser une requête préparée ou au moins appliquer un contrôle sur les variables pour éviter les éventuelles injections sql.

Bonne journée
0
miltonis Messages postés 238 Date d'inscription mercredi 6 octobre 2004 Statut Membre Dernière intervention 30 septembre 2022 19
8 mars 2016 à 14:53
Merci :)
0