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

MS SQL Server Discussion :

Requête et caractère spécial "


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut Requête et caractère spécial "
    Bonjour,

    J'ai crée ma première base avec SQL Server 2000.J'utilise php pour attaquer cette base.

    Voilà une requête qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $link = mssql_connect("10.1.6.14","xxxxx","xxxx")or die(" connexion impossible");
    mssql_select_db('[production]', $link);
    $requete="UPDATE intervention SET commentaire = \"".addslashes($_POST['comm_modif'])."\", date_cloture=\"$aujourdhui à $now\", validation=\"".$_POST['cloturer']."\" WHERE id=7990";
    $result = mssql_query( $requete );
    mssql_close();
    ?>
    Je ne pense pas avoir d'erreurs au niveau de la synthaxe, mais si $_POST['comm_modif'] contient des guillemets l'exécution de la requête est impossible. Pourtant addslashes les protège bien.

    Avez-vous des idées ?

    Merci à bientôt !

    Antoine

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut
    Voilà le résultat à l'éxécution :

    Ma requête :
    UPDATE intervention SET commentaire = "Tentative d\'enregistrement avec des guillemets \"\" !", date_cloture="23/08/2006 à 09:29:29", validation="Oui!" WHERE id=7986

    Warning: mssql_query(): message: Ligne 1 : syntaxe incorrecte vers '\'. (severity 15) in d:\weblocal\interventions\index_.php on line 288
    Warning: mssql_query(): Query failed in d:\weblocal\interventions\index_.php on line 288

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    je ne pense pas que le " pose de probleme par contre les simples quotes (') etant le séparateur de text de SQL forcément ca va planter.

    Pour éviter ca au lieu de les faire précéder de \ double les

    set toto = 'l''hopital'

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut


    Sympa d'avoir répondu

    Résultat sans mettre de simple quote:

    Ma requête :
    UPDATE intervention SET commentaire = "Tentative \"d enregistrement\" avec des guillemets !\"", date_cloture="23/08/2006 à 10:07:53", validation="Oui!" WHERE id=7986

    Warning: mssql_query(): message: Ligne 1 : syntaxe incorrecte vers 'd'. (severity 15) in d:\weblocal\interventions\index_.php on line 288

    Warning: mssql_query(): message: Ouvrez les guillemets avant la chaîne de caractères ' WHERE id=7986'. (severity 15) in d:\weblocal\interventions\index_.php on line 288

    Warning: mssql_query(): Query failed in d:\weblocal\interventions\index_.php on line 288


    C'est dingue, même en les protègeant ça ne passe pas !

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    c'est l'inverse qu'il faut faire. Tu vires les \, et tu doubles les '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    declare @test varchar(100)
    set @test = 'Tentative d''enrgistrement des'

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    UPDATE intervention
    SET commentaire =' "Tentative \"d enregistrement\" avec des guillemets !\"", date_cloture="23/08/2006 à 10:07:53", validation="Oui!" '
    WHERE id=7986

    il faut placer ta chaine entre simple quote pour que SQL comprenne que c est une chaine de caractere
    par contre a quoi serve tes slashs ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Par défaut
    C'est addslashes() qui me les place dans la chaine pour justement protéger les caractères spéciaux. Manifestement, ça n'a pas d'effets avec SQL Server !

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

Discussions similaires

  1. Caractère spécial dans une requête
    Par seroa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2009, 08h16
  2. [SQL] Affichage requête caractère spécial
    Par Nemesis007 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/03/2008, 14h59
  3. Réponses: 4
    Dernier message: 10/04/2007, 11h10
  4. Pb masquer caractère spécial
    Par cosminutza dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/11/2004, 11h27
  5. Réponses: 3
    Dernier message: 11/10/2004, 17h26

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