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 09/08/2011, 04h29   #1
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Par défaut Insertion dans boucle foreach

Bonjour à tous!

Actuellement, je développe un jeu faisant appel à du php.
Dans ce jeu, je dois récupérer les informations d'un utilisateur (liste d'amis) et j'insère ces informations dans une bdd.

Voici le bout de code que j'utilise.

Code :
1
2
3
4
5
6
7
8
9
foreach($friendlist['data'] as $friend)
				{
					$id =$friend['id']; 
					$nom = $friend['name'];
 
					//Insertion
					$req = mysql_query("INSERT INTO amis VALUES('','$id','$nom')") or die(mysql_error());
 
				}
Cependant, ce code récupère les deux premiers amis de l'utilisateur, insère le premier ami et ensuite j'ai le message d'erreur suivant:
Citation:
"You have an error in your SQL syntax;...."
Ce pour cela que j'aimerais avoir votre aide afin de résoudre mon problème.

Merci d'avance .
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 06h07   #2
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 460
Points : 644
Points : 644
Fais Afficher l'erreur que tu reçois.
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 20h20   #3
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Bonjour!!

Comment ça "fais Afficher l'erreur que je reçois"?
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 20h49   #4
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
bonjour,

tu peux afficher ta requête à l'aide d'un echo puis de la copier/coller dans phpmyadmin, tu auras ainsi plus de détails sur l'erreur.
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 21h00   #5
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
ah d'accord.. Je vais ça de suite alors..
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 21h15   #6
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Me revoilà!!

Voici l'erreur qui a été renvoyée par phpmyadmin:
Code :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO amis VALUES(Les_valeurs)' at line 1
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 21h40   #7
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
hmmm, étrange le retour mysql.
peux-tu nous donner l'echo de la requete ?
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 22h26   #8
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Bien sur.

Voici la requête:
Code :
$sql = "INSERT INTO amis VALUES('','$id','$nom')";
Ensuite, je vais mon echo de $sql.
Voici le résultat renvoyé(l'utilisateur n'ayant que deux amis):
Code :
1
2
3
 
INSERT INTO amis VALUES('','valeur1','valeur2')
INSERT INTO amis VALUES('','valeur3','valeur3')
ps: si ça peut aider, voici la description de la table dans laquelle je fais l'insertion:
id = valeur auto-increment
uid = l'id de l'ami
nom_complet = le nom complet de l'ami
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h06   #9
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
Etrange.
j'ai crée une table identique à la tienne (même nom, mêmes colonnes) et j'ai exécuté ta première requête... qui s'est bien enregistrée.
J'ai remarqué que dans tes requêtes il n'y a pas d'espaces entre le VALUES et la parenthèse, c'est peut-être ca.
Peux-tu essayer d'exécuter uniquement ta première requête pour savoir ce qui se passe ( après avoir mis un espace entre VALUES et "(" ) ?
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h32   #10
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

Vu que tu as un id auto-incrémenté, tu peux faire comme ça :

Code :
$sql = "INSERT INTO amis VALUES('$id','$nom')";
A+
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h38   #11
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
peux-tu afficher le résultat de :
Code :
1
2
3
4
5
<?php
echo '<pre>';
print_r($friendlist['data']);
echo '</pre>';
?>
et nous donner le message d'erreur complet (sans "...." !)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h30   #12
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Bonjour à tous!!

Alors,

Syl2095, j'ai essayé ta tachnique, mais ça ne fonctionne pas.
J'ai eu le message suivant:
Code :
Column count doesn't match value count at row 1
.

Anthony89, quand je fais la première insertion, cela fonctionne sans problème.
Cependant, si je veux faire mes insertions comme dans la boucle, j'ai toujours le message d'erreur. Et ce, même en ayant mis l'espace comme tu me l'a suggéré.

Jreaux62, j'ai fait ta manip'... et elle m'a affiché l'ensemble de l'utilisateur (avec id et nom). zéro message d'erreur.

Pour le message d'erreur que j'ai, voici ce que m'affiche:
- ma page web
Code :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Sylvain Youngin'')' at line 1
Sylvain Youngin étant le nom du deuxième ami récupéré.
- phpmyadmin
Code :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO amis VALUES ('' , '455557529' , 'Sylvain Youngin')' at line 2
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h51   #13
Futur Membre du Club
 
Femme
Étudiant
Inscription : janvier 2011
Messages : 17
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Arts - Culture

Informations forums :
Inscription : janvier 2011
Messages : 17
Points : 17
Points : 17
Bonjour,

moi avec les id automatiques, je procède comme ça :

Code :
INSERT INTO amis (uid,nom_complet) VALUES ('valeur1','valeur2')
Je ne cherche pas à remplir la colonne id.
wazokivol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h59   #14
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 772
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 772
Points : 2 329
Points : 2 329
Problème de simple quote apparemment...
Vérifie bien ce que tu rentres dans $nom.
FirePrawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h11   #15
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Code :
1
2
3
4
5
6
7
				foreach($friendlist['data'] as $friend)
				{
					$id = mysql_real_escape_string($friend['id']); 
					$nom = mysql_real_escape_string($friend['name']);
					//Insertion
					$req = mysql_query("INSERT INTO amis (uid, nom_complet) VALUES('".$id."','".$nom."');") or die(mysql_error());
				}
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h17   #16
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par jreaux62 Voir le message
peux-tu afficher le résultat de : ...
afficher print_f($friendlist['data']); nous permet de voir la structure et le contenu de l'array !!
Citation:
Envoyé par jreaux62 Voir le message
et nous donner le message d'erreur complet (sans "...." !)
De l'erreur SQL ! pas de print_f($friendlist['data']); !!
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 15h50   #17
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
jreaux62, j'ai fait la manip' avec le code que tu as mis et ça fonctionne.. Plus de messages d'erreur.

Par contre, c'est print_f ou printf?? Parce qu'avec le , j'ai le message suivant
Code :
Call to undefined function print_f() in
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 16h08   #18
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Oups ! Mea culpa. C'est print_r() ou var_dump() (rien à voir avec printf()). désolé
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 16h26   #19
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 11
Points : 2
Points : 2
Citation:
Envoyé par jreaux62 Voir le message
Oups ! Mea culpa. C'est print_r() ou var_dump() (rien à voir avec printf()). désolé
Pas de souci ..

Quand je disais que le code du print_() m'affichait l'ensemble des utilisateurs, je m'étais mal exprimé.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
[0] => Array
        (
            [name] => nom_ami
            [id] => id_ami
        )
 
    [1] => Array
        (
            [name] => nom_ami
            [id] => id_ami
        )
etc etc

ps: je tiens à remercier tous ceux qui ont pris le temps de s'intéresser à mon post et à m'aider..
fluxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web