Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/10/2011, 18h07   #1
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
Par défaut Récupération $POST_ pour un insert

Bonjour à tous
je veux récupérer un POST_ d'un formulaire
pour m'en servit dans un INSERT
Mais j'ai une erreur de syntaxe que je comprends pas

Code :
1
2
3
4
$SQL="INSERT INTO ".$table1."
		SET	numero_adh='".POST_$numero_adh."',
			ad_read_cotis='".POST_$ad_read_cotis."',
			nom_adh='".$POST_nom_adh."'
Merci d'avance.
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 21h15   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
1) La syntaxe normale de INSERT est :
Code SQL :
1
2
INSERT INTO la_table (/* les_colonnes_à_alimenter */)
VALUES (/* les_valeurs_alimentant_les_colonnes */)

2) En PHP, la variable globale $_POST est un tableau. Il faut donc utiliser ses différents éléments de cette manière :
3) Pourquoi mettre le nom de la table dans une variable alors que les noms de colonnes sont en clair ?

4) Pour éviter les injections SQL, il faut utiliser mysql_real_escape_string pour les valeurs textuelles et intval pour les valeurs entières.

Ce qui donnerait ce code :
Code :
1
2
3
4
5
6
$SQL = "
	INSERT INTO /* vrai nom de la table */ (numero_adh, ad_read_cotis, nom_adh) 
	VALUES ('".mysql_real_escape_string($_POST['numero_adh'])."', 
			'".mysql_real_escape_string($_POST['ad_read_cotis'])."', 
			'".mysql_real_escape_string($_POST['nom_adh'])."' )
	";
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 10h34   #3
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
merci cinephil pour ta réponse
-pour le $table c'est une habitude que j'ai prise de déclarer mes tables en début de script après mon connect,
- pour la sécurité effectivement il faut mieux prendre l'habitude de le faire, mais dans mon cas il n'y pas que le super admin qui peut insérer une écriture par le formulaire
- l'INSERT
ne peut-on pas réaliser un INSERT avec un SET ??

je récupère les variables de mon POST
Code :
1
2
3
4
5
6
7
 
if(isset($_POST['nom_adh']))    // on récupere les INPUT du formulaire
{
	$numero_adh=$_POST['numero_adh];
	$id_statut=$_POST['id_statut'];
	$nom_adh=$_POST['nom_adh'];
}
ensuite je fais mon INSERT avec un SET

Code :
1
2
3
4
5
 
$SQL="INSERT INTO ".$table."
		SET	numero_adh='".$numero_adh."',
			id_statut='".$id_statut."',
			nom_adh='".$nom_adh."'
donc, mon but était d'affecter directement la variable $_POST dans le INSERT sans passer par la première de étape récupération des $_POST
du genre

Code :
1
2
3
4
5
6
$SQL="INSERT INTO ".$table."
   SET	numero_adh='".mysql_real_escape_string($_POST['numero_adh'])."',
id_statut='".mysql_real_escape_string($_POST['id_statut'])."',
nom_adh='".mysql_real_escape_string($_POST['nom_adh'])."'
"; // ne pas oublier ca marche mieux
$result = mysql_query($SQL) or die ("Exécution de la requête INSERTION impossible");
mais là j'ai un problème de syntaxe
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 11h06   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Citation:
mais là j'ai un problème de syntaxe
Lequel ?
Ajoute mysql_error() dans le die de la soumission de la requête.

Pourquoi ne pas avoir essayé ma requête qui est plus conforme au standard ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 17h03   #5
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
merci cine phil pour ta gentillesse
avec les copier/ coller il ne faut pas en oublier une partie

donc j'ai modifié le code de mon dernier message en rajoutant
le "; qui avait sauté
et tes bons conseils pour la sécurité que j'ai bien notés

en conclusion le code fonction très bien
Code :
1
2
3
4
5
6
7
8
9
 
$SQL="INSERT INTO ".$table."
   SET	numero_adh='".mysql_real_escape_string($_POST['numero_adh'])."',
id_statut='".mysql_real_escape_string($_POST['id_statut'])."',
nom_adh='".mysql_real_escape_string($_POST['nom_adh'])."'
 
"; // ne pas oublier et ca marche mieux
 
$result = mysql_query($SQL) or die ("Exécution de la requête INSERTION impossible");
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 21h30   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 244
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 244
Points : 1 566
Points : 1 566
Oui y'a pas de souci à utiliser cette syntaxe, mais la syntaxe indiquée par CinePhil est plus confortable à utiliser, notamment quand ont fait des inserts multiples. C'était juste une précision du pourquoi on utilise peu cette façon de faire
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web