Problème de UPDATE (mysql)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de UPDATE (mysql)

par ouckileou » 27 mai 2007, 22:17

ça sert à rien de remplacer par n'importe quoi non plus :roll:

Code : Tout sélectionner

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...]
C'est bien le nom de la table qui suit le "UPDATE". Par contre, les colonnes mises à jour après le SET sont séparées par des virgules

par chrislabricole » 27 mai 2007, 21:54

Ahhh !!!!!!!!!!!!!

ENFIN du résultat... juste pour des simples virgules.... |*() :mrgreen:

Merci à :google: et à ElePHPant (mon copain) et surtout, un grand merci à VOUS ! :wink: :wink:

par ouckileou » 27 mai 2007, 21:33

Tu as regardé le modèle dans la documentation ?

par chrislabricole » 27 mai 2007, 20:38

Des Erreurs de Syntax... il y en a une qui m'échappe... et je la trouve pas... :x :cry:

par ouckileou » 27 mai 2007, 18:34

ça n'a rien à voir avec la version, c'est que ton update comporte des erreurs de syntaxe, comme le message l'indique.

Voir dans la doc...
http://dev.mysql.com/doc/refman/5.0/fr/update.html

Et les trucs simples pour débugger, tu aurais vu cette erreur dès le début :
http://www.phpfrance.com/forums/voir_sujet-19378.php

(ce qui n'annule pas les remarques que Sékiltoyai a faites)

par chrislabricole » 27 mai 2007, 18:14

eu !

sa me dit sa, que dois-je faire ??
Erreur SQL : 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 'prenom='testprenom' dn='testdn' mail='testaemail' WHERE id=''' at line 1
apparament, les paramettre post sont bien récuperers...

PS: dans phpMyAdmin :
Version du serveur: 5.0.27-community-nt
Pourtant ! c'est la dernière version ! nan ??
ou peut-être, c'est une version trop avancé....

par Sékiltoyai » 27 mai 2007, 17:55

mysql_query("UPDATE table_utilisateurs SET nom='".$nom."' prenom='".$prenom."' dn='".$dn."' mail='".$mail."' WHERE id='".$id."'") or die('Erreur SQL : '. mysql_error());

$nb_modif = mysql_affected_rows();
Tout simplement :-/

par chrislabricole » 27 mai 2007, 16:06

hola... c'est un peut compliquer tout sa... :? je change quoi par quoi ? la "$requete", je le laisse !!!???? :?:

par Sékiltoyai » 27 mai 2007, 14:41

Je t'ai dis que mysql_query() renvoyait simplement TRUE ou FALSE pour des requètes UPDATE.
Et mysql_affected_rows() prend en argument optionnel la ressource de connexion, qui est fournie par mysql_connect().
Les fonctions sont bonnes, mais l'argument de mysql_affected_rows() est à changer ou enlever, et le retour de mysql_query() doit être utilisé autrement...

par chrislabricole » 27 mai 2007, 14:04

Mais alors, c'est sa !! :?:
$requete = mysql_query("UPDATE table_utilisateurs SET nom='".$nom."' prenom='".$prenom."' dn='".$dn."' mail='".$mail."' WHERE id='".$id."'");
		 
    $result = mysql_affected_rows($requete);
:ordi:

par Sékiltoyai » 27 mai 2007, 13:27

Quand je t'ai dis que mettre 2 fois mysql_query(), c'était une erreur, je ne te disais pas de les supprimer tous les 2 !
Regarde la doc php sur les fonctions mysql : http://fr3.php.net/mysql
mysql_affected_rows() prend comme argument optionnel la ressource de connexionà la base de données, et n'est valide que quand on a exécuté la requète auparavant...

par chrislabricole » 27 mai 2007, 10:24

hum.. hum... irk !
comment on fais??
mais il y a déja sa .... :
    mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
    mysql_select_db($BD_base)
        or die("Impossible de se connecter a la base de données.");

par orgerix » 27 mai 2007, 10:19

IL faut que tu mette la variable corespondant à la conneion à la BDD et non à la dernière requete

par chrislabricole » 27 mai 2007, 10:13

A oui, effectivement, je me suis tromper, mais sa marche toujours pas....

voici mon nouveau code :
<?php
    // Parametres de connexion a la base de données
    $BD_serveur     = "localhost";
    $BD_utilisateur = "mon_user";
    $BD_motDePasse  = "mon_mdp";
    $BD_base        = "ma_base";

    // Récupération des parametres POST
	$id = $_POST["id"];
    $prenom = $_POST["prenom"];
    $nom = $_POST["nom"];
    $dn = $_POST["dn"];
    $mail = $_POST["mail"];

    echo "Bonjour ".stripSlashes($prenom)." ".stripSlashes($nom).",<br />";
    
    mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
    mysql_select_db($BD_base)
        or die("Impossible de se connecter a la base de données.");
    
    $requete = "UPDATE table_utilisateurs SET nom='".$nom."' prenom='".$prenom."' dn='".$dn."' mail='".$mail."' WHERE id='".$id."'";
               
    $result = mysql_affected_rows($requete);
   if (!$result) {
        echo "L'enregistrement de vos données a échoué !<br />";
    } else {
        echo "Infos modifiers avec succès !<br />";
    }
?>
Mais le petit éléphant me dit que à la ligne 24 :
mysql_affected_rows($requete);
il y a une erreur, voici son message :
Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in *:\***\*******\modif_membre.php on line 24
(sous windows)

Merci de vos réponses ! ! :wink: :wink:

par Sékiltoyai » 27 mai 2007, 01:20

1) Pourquoi fais tu 2 fois un mysql_query(), surtout que la seconde fois, la requète en paramètre en une variable qui à priori n'existe pas.
2) Quand tu fais une requète UPDATE, mysql_query() ne retourne FALSE que s'il y avait une erreur dans la requète. Pour savoir s'il y a eu des enregistrements modifiés, il faut utiliser mysql_affected_rows()