PHP & MYSQL Update - Problème de variables
bogus01
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème que j'essaie de comprendre, mais dont je ne viens pas à bout.
Mon script devrait en théorie mettre à jour ma bd. Mais lorsque je reçois le contenu des variables. Tout est OK. Mais la mise à jour n'est pas effectuée.
Je fais un echo $desc et de $id le contenu est là.
Mais lorsque l'update est faite, rien n'est effectué.
La variable $id n'est pas le problème. Puisque si je force la variable $desc pour "123" par exemple, à ce moment la mise à jour va être effectué. Mais si la variable qui provient de ma fonction get_desc($id) est égale à "123" alors ça ne fonctionne pas. Pourtant c'est le même résultat mais pas la même provenance.
Et si je prends le résultat de "echo $query" et que je l'exécute dans phpmyadmin. La mise à jour va fonctionner. Mais pas dans PHP... Ça fait 2 jours que je tourne en rond avec des debug à gauche et à droite.
----------------
je connecte la bd
----------------
ensuite je reçois les variables
$id = $_GET['pid'];
$desc = get_desc($id);
$query = sprintf("UPDATE products inner join products_description SET"
. " products_description = '".$desc."' "
. " WHERE products.products_model = '$id' "
. " AND products.products_id = products_description.products_id ;");
$Recordset1 = mysql_query($query);
echo $id;
echo "<br>";
echo $desc;
echo "<br>";
echo $query;
echo "<br>";
echo "<br>";
$result_info = mysql_info($linkz);
echo $result_info;
P.s. La fonction get_desc est fonctionnelle puisqu'elle sert déjà pour d'autres pages à récupérer la même variable... mais je ne reprends pas la variable pour mettre à jour la bd :(
Aidez moi quelqu'un :) J'ai l'impression que c'est tellement con comme solution que je ne le vois pas...
J'ai un problème que j'essaie de comprendre, mais dont je ne viens pas à bout.
Mon script devrait en théorie mettre à jour ma bd. Mais lorsque je reçois le contenu des variables. Tout est OK. Mais la mise à jour n'est pas effectuée.
Je fais un echo $desc et de $id le contenu est là.
Mais lorsque l'update est faite, rien n'est effectué.
La variable $id n'est pas le problème. Puisque si je force la variable $desc pour "123" par exemple, à ce moment la mise à jour va être effectué. Mais si la variable qui provient de ma fonction get_desc($id) est égale à "123" alors ça ne fonctionne pas. Pourtant c'est le même résultat mais pas la même provenance.
Et si je prends le résultat de "echo $query" et que je l'exécute dans phpmyadmin. La mise à jour va fonctionner. Mais pas dans PHP... Ça fait 2 jours que je tourne en rond avec des debug à gauche et à droite.
----------------
je connecte la bd
----------------
ensuite je reçois les variables
$id = $_GET['pid'];
$desc = get_desc($id);
$query = sprintf("UPDATE products inner join products_description SET"
. " products_description = '".$desc."' "
. " WHERE products.products_model = '$id' "
. " AND products.products_id = products_description.products_id ;");
$Recordset1 = mysql_query($query);
echo $id;
echo "<br>";
echo $desc;
echo "<br>";
echo $query;
echo "<br>";
echo "<br>";
$result_info = mysql_info($linkz);
echo $result_info;
P.s. La fonction get_desc est fonctionnelle puisqu'elle sert déjà pour d'autres pages à récupérer la même variable... mais je ne reprends pas la variable pour mettre à jour la bd :(
Aidez moi quelqu'un :) J'ai l'impression que c'est tellement con comme solution que je ne le vois pas...
A voir également:
- PHP & MYSQL Update - Problème de variables
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
9 réponses
Salut !
As-tu essayé de rentrer seulement la commande SQL dans MySQL (ou peu importe ce que tu utilises) ? Il peut te sortir un message d'erreur s'il y en a une...
As-tu essayé de rentrer seulement la commande SQL dans MySQL (ou peu importe ce que tu utilises) ? Il peut te sortir un message d'erreur s'il y en a une...
hello,
2 petites questions pour mieux comprendre :
- "inner join" me semble inadapté pour cet update : est-ce que 'products_description' est une table ou bien une colonne ?
- "$id" ne correspondrait-il pas plutôt à products.products_id (et pas model) ?
2 petites questions pour mieux comprendre :
- "inner join" me semble inadapté pour cet update : est-ce que 'products_description' est une table ou bien une colonne ?
- "$id" ne correspondrait-il pas plutôt à products.products_id (et pas model) ?
Je n'ai pas le choix pour le "inner Join" puisque ce sont 2 tables qui doivent être lié pour obtenir le bon résultat. Les tables "products" et "products_description"
Non le "$id" ne correspond pas au products.products_id.
Comme je l'ai mentionner, la requete d'update fonctionne dans le cas suivant:
Si je met : $desc = '123';
Le résultat est : Requete update correcte
Si j'utilise le résultat de la fonction : $desc = get_desc($id) qui elle retourne '123', à ce moment la requete update ne renvoi rien.
Pourtant "$desc" donne le même résultat...
Non le "$id" ne correspond pas au products.products_id.
Comme je l'ai mentionner, la requete d'update fonctionne dans le cas suivant:
Si je met : $desc = '123';
Le résultat est : Requete update correcte
Si j'utilise le résultat de la fonction : $desc = get_desc($id) qui elle retourne '123', à ce moment la requete update ne renvoi rien.
Pourtant "$desc" donne le même résultat...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
quel est le type de la colonne products_model ?
si c'est du texte alors peut être essayer avec un LIKE à la place du signe égal :
si c'est du texte alors peut être essayer avec un LIKE à la place du signe égal :
(...) " WHERE products.products_model LIKE '$id' " (...)
coeus : Lorsque je regarde le resultat du "echo $id;" la valeur est la bonne. Et pour votre compréhension. La fonction "getdesc()" provient d'un autre page PHP. Et elle me retourne une description qui elle est lié à un numero de pièce qui est $id...
La fonction "getdesc($nomdelavariable)" est correcte puisque je l'utilise dans d'autre page sans problème et dans le même contexte.
Donc $id récupère le numero de pièce via l'URL
Ensuite j'envoie le numero à la fonction getdesc($id) qui elle me retourne une description et la stock dans la variable $desc
Et ensuite je "veux" mettre à jour la description dans la requete MYSQL... et c'est là que ca ne fonctionne pas.
Pourtant lorsque je regarde le resultat de "echo $desc" la variable à le contenu désiré...mais la requete ne l'execute pas.
Et si je force "$desc = 'peu importe la description';" alors là la requète fonctionne.
Mais pourquoi une variable qui provient d'une fonction n'est pas interprété de la même façon ? Est-ce que je dois définir autre chose ?
La fonction "getdesc($nomdelavariable)" est correcte puisque je l'utilise dans d'autre page sans problème et dans le même contexte.
Donc $id récupère le numero de pièce via l'URL
Ensuite j'envoie le numero à la fonction getdesc($id) qui elle me retourne une description et la stock dans la variable $desc
Et ensuite je "veux" mettre à jour la description dans la requete MYSQL... et c'est là que ca ne fonctionne pas.
Pourtant lorsque je regarde le resultat de "echo $desc" la variable à le contenu désiré...mais la requete ne l'execute pas.
Et si je force "$desc = 'peu importe la description';" alors là la requète fonctionne.
Mais pourquoi une variable qui provient d'une fonction n'est pas interprété de la même façon ? Est-ce que je dois définir autre chose ?
Bonjour
Suggestion : puisque ta requête ne semble pas marcher de la même manière dans le script et 'à la main', vérifier d'abord si elle est correcte pour le script :
$Recordset1 = mysql_query($query) or die (mysql_error());
D'autre part, l'intérêt d'utiliser un sprintf pour créer ta requête m'échappe complètement, c'est même une source de problèmes s'il y a des '%' dans tes variables
Suggestion : puisque ta requête ne semble pas marcher de la même manière dans le script et 'à la main', vérifier d'abord si elle est correcte pour le script :
$Recordset1 = mysql_query($query) or die (mysql_error());
D'autre part, l'intérêt d'utiliser un sprintf pour créer ta requête m'échappe complètement, c'est même une source de problèmes s'il y a des '%' dans tes variables
le père : Avec "$Recordset1 = mysql_query($query) or die (mysql_error());" j'obtiens le même résultat.
Si je force la variable, ca marche. Si je laisse la variable recevoir le contenu de la fonction, pas de mise-à-jour.
Pour le sprintf, je l'ai essayer en remplacant la requete par : $query = "UPDATE products inner join products_description SET products_description = '$desc' WHERE products.products_model = '$id' AND products.products_id = products_description.products_id";
et j'ai le même résultat!
Si je force la variable, ca marche. Si je laisse la variable recevoir le contenu de la fonction, pas de mise-à-jour.
Pour le sprintf, je l'ai essayer en remplacant la requete par : $query = "UPDATE products inner join products_description SET products_description = '$desc' WHERE products.products_model = '$id' AND products.products_id = products_description.products_id";
et j'ai le même résultat!