Update SQL + PHP [Résolu/Fermé]

Signaler
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
-
Messages postés
124
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
22 octobre 2013
-
Bonjour,

J'ai un petit soucis avec une requête SQL et je n'arrive pas à trouver mon problème. Est-ce que quelqu'un pourrait m'aider ?

Voici mon code :


$array_pictures = array_combine($tab_mail_user,$tab_identifiant_users);
foreach($array_pictures as $mail => $insert_pictures)
{
if($mail = $tab_mail_user)
{
$update_bd = mysql_query('UPDATE users SET picture ='.$insert_pictures);
}
}
$result = mysql_num_rows($update_bd);

echo '<pre>';
print_r ($result);
echo '</pre>';

Mon $tab_mail_user est en fait un tableau d'une requête précédente qui récupére tous les adresses mail des utilisateurs. Et mon $mail est ma clé d'un autre tableau et qui correspond à l'adresse mail des users.

Pourriez-vous m'aider ?

Merci d'avance.
Romain COUTINEAU.

3 réponses

Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 445
Salut,

si ta variable $insert_pictures contient des valeurs alphanumériques (autre que numérique), il faut l'entourer de quotes.

On couple souvent le mysql_query avec : OR die(mysql_error());
comme ça, si tu as une erreur SQL, tu en seras informé.
Merci beaucoup mais je dois mal gérer le truc car ma requête fonctionne correctement mais le probléme c'est que dans mon champ ''picture'' de ma BDD il m'ajoute pour chaque enregistrement la derniére ligne de tableau $insert_picture alors que je veux qu'il m'ajoute la ligne correspondante au mail.

Je dois surement mal faire mon ''If'' pourriez vous m'éclairez ?

Merci d'avance.
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 445
je ne sais pas ce que tu es censé avoir dans tes variables, mais tu peux contrôler ce qu'il y a dedans avec un print_r();

si insert_picture est un tableau tu dois probablement oublié de faire quelque chose.
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016

Dans ma variable $mail c'est la clé de mon tableau $array_pictures et ma variable $tab_mail_user est un tableau.

En gros voila un exemple :

$tab_mail_user :
Array([0]=>nom.prenom@adresse.fr,
[1]=>nom.prenom@adresse.fr);

Et $mail : [nom.prenom@adresse.fr] (clé d'un autre tableau)

Et ce que je veux faire c'est que pour chaque clé ($mail) si elle est égale à une valeur du tableau $tab_mail_user alors tu fais un UPDATE de l'enregistrement en question.
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
18 juillet 2018
1 445
bah essaie avec un in_array dans ton if, comme je viens de le dire.

https://www.php.net/in_array
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016

Je viens de faire ça :


foreach($array_pictures as $mail => $insert_pictures)
{
if(in_array($mail,$tab_mail_user))
{
$update_bd = mysql_query('UPDATE users SET picture ="'.$insert_pictures.'"') OR DIE (mysql_error());
}
}

Et ça ne fonctionne toujours pas il ajoute pour chaque enregistrement de ma base, la derniére valeur de mon tableau $array_pictures.
Messages postés
124
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
22 octobre 2013
5
c'est normal, tu ne mets pas de clause dans ta requete, donc elle agit sur toute ta table users...
Met une clause WHERE COLONNE_MAIL='$mail'
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016

Je l'ai ajouté au moment...où tu m'as écrit ! :D

Merci beaucoup pour ton aide ça fonctionne correctement

romain
Messages postés
124
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
22 octobre 2013
5
bah oui, c'est surement mieux en lui indiquant la ligne à modifier :P

Bonne continuation ;)