IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème php caractère spéciaux [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut Problème php caractère spéciaux
    Bonjour,

    Voila j'ai un petit problème dans ma requete sql et je pense que cela vient du addslashes est il bien mis svp



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     "UPDATE ARRET_CHAINE
    	SET 	TYPE = '$TYPE',
    	CAUSE = '$CAUSE',
    	DEMANDE = '$DEMANDE',
    	COMPLEMENT_INFORMATION = '".addslashes($COMPLEMENT)."',
    	IMPUTATION = '$IMPUTATION',
    	HEURE_DEBUT = '$H_DEBUT',
    	HEURE_FIN = '$H_FIN' 
    WHERE NUMERO_ARRET_CHAINE = $num";
    merci d'avance

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Il est bien mis quel est l'erreur au niveau de la requete?
    ►Ne pas oublier le

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    merci de votre réponse hyper rapide

    voici l'erreur

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''Arret d\\\'urgence: silhouette 8 enclenchée', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1'., SQL state 37000 in SQLExecDirect in D:\GTP\www\GTP\1_Arret_chaine\Modif_et_Suppr.php on line 97
    Erreur SQL :
    UPDATE ARRET_CHAINE SET TYPE = 'Arrêt chaîne', CAUSE = 'Problème de process/moyens', DEMANDE = 'Pupitre gestion de chaîne', COMPLEMENT_INFORMATION = 'Arret d\\\'urgence: silhouette 8 enclenchée', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1

    c'est surtout la je pense

    COMPLEMENT_INFORMATION = 'Arret d\\\'urgence: silhouette 8 enclenchée',

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    oui effectivement ca vient de la cependant le addslashes aurait du résoudre le problème...

    La honnêtement je vois pas vraiment cette fonction aurait du résoudre ton problème... Par contre c'est étonnant qu'il y a ai autant de \ avant le ' il ne devrait y en avoir qu'ujn alors pourquoi y en a t-il trois?
    ►Ne pas oublier le

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    c'est bien cette fonction qui doit échappé l'apostrophe?

    Il y en a pas une autre?

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Pourquoi il y en a 3 : parce que c'est mal codé... et/ou que magic_quotes_gpc est activé...

    addslashes ne devrait pas etre utilisé dans les requetes

    On doit utiliser (pour faire les choses proprement) :
    * Soit une abstraction qui permet de passer des variables directement a la base (par exemple PDO) (c'est le top !)
    * Soit les fonctions SPECIFIQUES de chaque base comme mysql_real_escape_string

    Maintenant, cela suppose aussi de gérer correctement ses variables, comprendre la problématique du magic_quotes_gpc, etc... mais bon, là c'est un gros gros gros chantier...

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    regardez j'ai enlevé la fonction addslashes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     "	UPDATE ARRET_CHAINE
    	SET 	TYPE = '$TYPE',
    		CAUSE = '$CAUSE',
    		DEMANDE = '$DEMANDE',
    		COMPLEMENT_INFORMATION = '$COMPLEMENT',
    		IMPUTATION = '$IMPUTATION',
    		HEURE_DEBUT = '$H_DEBUT',
    		HEURE_FIN = '$H_FIN' 
    	WHERE NUMERO_ARRET_CHAINE = $num";
    Et voici l'erreur

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''Arret d\'urgence: silhouette 8 enclenchée', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1'., SQL state 37000 in SQLExecDirect in D:\GTP\www\GTP\1_Arret_chaine\Modif_et_Suppr.php on line 97
    Erreur SQL :
    UPDATE ARRET_CHAINE SET TYPE = 'Arrêt chaîne', CAUSE = 'Problème de process/moyens', DEMANDE = 'Pupitre gestion de chaîne', COMPLEMENT_INFORMATION = 'Arret d\'urgence: silhouette 8 enclenchée', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1

    il met bien un seul slash

    COMPLEMENT_INFORMATION = 'Arret d\'urgence: silhouette 8 enclenchée'

    edit : alors hélas je n'ai pas la chance de pouvoir utiliser PDO tout simplement parce que que ma bdd enfin bdd bref..
    C'est access contrainte de l'entreprise
    Donc vous me conseillez d'implémenter comme ca mon code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $COMPLEMENT = addslashes($COMPLEMENT);
    "	UPDATE ARRET_CHAINE
    	SET 	TYPE = '$TYPE',
    		CAUSE = '$CAUSE',
    		DEMANDE = '$DEMANDE',
    		COMPLEMENT_INFORMATION = '$COMPLEMENT',
    		IMPUTATION = '$IMPUTATION',
    		HEURE_DEBUT = '$H_DEBUT',
    		HEURE_FIN = '$H_FIN' 
    	WHERE NUMERO_ARRET_CHAINE = $num";
    j'ai bien compris?

    edit 2 : comment savoir si magic_quotes_gpc est activé?

  8. #8
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par drogba72
    edit 2 : comment savoir si magic_quotes_gpc est activé?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(get_magic_quotes_gpc()){
    //action s'il est activé
    }
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    je peut mettre ce code dans n'importe quel page php tant quel tourne sur le serveur?

  10. #10
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    donc effectivement il est activé que dois je faire pour régler mon problème d'apostrophe sachant qu'il est activé?

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    utilise odbc_prepare et odbc_execute, c'est le mieux. Comme ca tu laisse la base de données gérer les données qui viennent de l'exterieur.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    excusez moi mais je viens d'aller sur le serveur pour le mettre a off et ca ne s'est pas enregistrer est ce normal il est rester a on

    ya t'il autre chose que le php.ini a changer?

  13. #13
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    je viens d'essayer ce que vous m'avez dit mais je ne comprend pas lol

    j'éxécute comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $req = odbc_prepare($conn,$sql) or die('Erreur SQL : <br />'.$sql);
    odbc_execute($sql) or die("ERROR");
    et l'erreur est toujours

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''Arret d\'urgence N° 8 enclenché', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1'., SQL state 37000 in SQLExecDirect in D:\GTP\www\GTP\1_Arret_chaine\Modif_et_Suppr.php on line 97
    Erreur SQL :
    UPDATE ARRET_CHAINE SET TYPE = 'Arrêt chaîne', CAUSE = 'Problème de process/moyens', DEMANDE = 'Pupitre gestion de chaîne', COMPLEMENT_INFORMATION = 'Arret d\'urgence N° 8 enclenché', IMPUTATION = 'Up montage (85)', HEURE_DEBUT = '08:16:29', HEURE_FIN = '08:17:45' WHERE NUMERO_ARRET_CHAINE = 1

    c'est normal?

  14. #14
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Il faut utiliser odbc_prepare et odbc_execute proprement, c'est a dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql="UPDATE ... SET colonne1=?, colonne2=?, colonne3=?, ...";
     
    $req = odbc_prepare($connection, $sql);
    odbc_execute($req, array($valeur1, $valeur2, $valeur3, ...));
    En faisant comme ca, pas besoin de addslashes sur $valeur1, $valeur2, etc... c'est la base qui va automatiquement echapper les variables.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/12/2014, 10h00
  2. [MySQL] Problèmes avec caractères spéciaux
    Par brokengillou dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2006, 17h02
  3. Probléme encodage caractéres spéciaux MYSQL
    Par FoxLeRenard dans le forum Installation
    Réponses: 1
    Dernier message: 20/02/2006, 12h10
  4. [SOAP] problème de caractères spéciaux
    Par ep31 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 02/12/2005, 17h43
  5. [SQL Server] problème de caractères spéciaux
    Par mbibim63 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 02/06/2005, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo