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 d'insertion avec apostrophe [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut Problème d'insertion avec apostrophe
    Bonsoir,
    Il m'es timpossible de faire des enregistrements dans ma base mysql, lorsqu'il ya des apostrophes.
    Comment faire pour y remédier?
    you have an error in your sql syntax. Check the manual that corresponds to your mysql sderver version for the right syntax to use near 'air du temps' and Numcli<>'7'' at line 1
    merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    c'est addslashes() qu'il faut utiliser
    (sur php.net pour la doc !!)

  3. #3
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai essyé d'utiliser addslashes mais sans succès!

  5. #5
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    là il nous faut du code.

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    $updateSQL = sprintf("UPDATE client SET Raison_sociale=%s, Adresse=%s, telephone=%s, Gestionnaire=%s, Activite=%s WHERE NumCli=%s",
    GetSQLValueString(strtoupper(addslashes($HTTP_POST_VARS['raison'])), "text"),
    GetSQLValueString($HTTP_POST_VARS['adresse'], "text"),
    GetSQLValueString($HTTP_POST_VARS['telephone'], "text"),
    GetSQLValueString($HTTP_POST_VARS['gestionnaire'], "text"),
    GetSQLValueString($HTTP_POST_VARS['activite'], "text"),
    GetSQLValueString($HTTP_POST_VARS['NumCli'], "int"));

    mysql_select_db($database_connection, $connection);
    $Result1 = mysql_query($updateSQL, $connection) or die(mysql_error());

  7. #7
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    utilise addslashes au dernier moment, dans ton mysql_query ou juste avant, sur l'intégralité de ta requête.

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    lorsque on ne met l'apostrophe dans le champ raion, la mise à jour se fait sans problème. mais lorsque je mets l'apostrophe, l'erreur est la meme.

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai fait comme Maxoo a dit, mais l'erreur persisite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $_POST['raison'] = addslashes($_POST['raison']);
    	$_POST['telephone'] = addslashes($_POST['telephone']);
    	$_POST['adresse'] = addslashes($_POST['adresse']);
     
    	$_POST['gestionnaire'] = addslashes($_POST['gestionnaire']);
    	$_POST['activite'] = addslashes($_POST['activite']);

  10. #10
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    place ton code dès le début de la page, fait un juste apres et montre nous le résultat du print_r dans les deux cas : avec ou sans apostrophes.

  11. #11
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    print_r($_POST['raison']); donne lecalendrier

    et print_r(addslashes($_POST['raison'])); donne la meme erreur

  12. #12
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Citation Envoyé par Maxoo
    place ton code dès le début de la page, fait un juste apres et montre nous le résultat du print_r dans les deux cas : avec ou sans apostrophes.
    je veux que tu fasses un print_r($_POST); tout simplement.

  13. #13
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai mis le print_r($_POST); :

    **quand il n'ya pas d'apostrophe, j'ai array ()

    ***quand je mets l'apostrophe, voici ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [raison] => aav 'dsf [telephone] => 775544 [adresse] => bp 1484 [activite] => commerce [gestionnaire] => tartampion [NumCli] => 136 [MM_update] => form1 ) Erreur de syntaxe près de 'dsf' and NumCli<>'136'' à la ligne 1

  14. #14
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    ***quand je mets l'apostrophe, voici ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [raison] => aav 'dsf [telephone] => 775544 [adresse] => bp 1484 [activite] => commerce [gestionnaire] => tartampion [NumCli] => 136 [MM_update] => form1 ) Erreur de syntaxe près de 'dsf' and NumCli<>'136'' à la ligne 1

  15. #15
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    déja, si tu as fais ton print_r apres que tu ais fait les addslashes logiquement il devrait y avoir un \' ...

    dans tout les cas, montre nous le code du début de ta page du <?php à print_r() et vérifie que tu as bien écris addslashes

  16. #16
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'essaie avec mysql_real_escape_string(stripslashes(trim($_POST['raison'])))." mais il ya toujours la même erreur

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
    include('secure.php');
     
    require_once('Connections/connection.php'); ?>
    <?php
     print_r($_POST);
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
     
    $editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
    if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
      $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
    }
     
     
     
     
    if (isset ($_POST['raison']))
    {
     
    mysql_select_db($database_connection, $connection);
    $query_rsclient ="SELECT *  FROM client WHERE Raison_sociale = '".$_POST['raison']."' and NumCli<>'".$_POST['NumCli']."' ";
    $rsclient = mysql_query($query_rsclient, $connection) or die(mysql_error());
    $row_rsclient = mysql_fetch_assoc($rsclient);
    $totalRows_rsclient = mysql_num_rows($rsclient);
    if ($totalRows_rsclient>0 )
       {    
    	 $message='Cette raison sociale existe dèjà dans la base. Modification non effectuée'; 
       }
    else
    {
     
    if  ( (isset ($_POST['raison'])) and  (isset ($_POST['telephone']))  )
    	{
    mysql_select_db($database_connection, $connection);
    $query_rscl = "SELECT * FROM client WHERE Raison_sociale = '".trim($_POST['raison'])."' and telephone='".trim($_POST['telephone'])."' and Adresse='".trim($_POST['adresse'])."'  and Gestionnaire='".trim($_POST['gestionnaire'])."' and  Activite='".trim($_POST['activite'])."'";
    $rscl = mysql_query($query_rscl, $connection) or die(mysql_error());
    $row_rscl = mysql_fetch_assoc($rscl);
    $totalRows_rscl = mysql_num_rows($rscl);
    if ($totalRows_rscl==0)
      {
     
    		$updateSQL = "UPDATE client SET Raison_sociale = '".mysql_real_escape_string(stripslashes(trim($_POST['raison'])))."', telephone='".trim($_POST['telephone'])."', Adresse='".trim($_POST['adresse'])."' , Gestionnaire='".trim($_POST['gestionnaire'])."' ,  Activite='".trim($_POST['activite'])."' WHERE NumCli= '".trim($_POST['NumCli'])."'";
     
      mysql_select_db($database_connection, $connection);
      $Result1 = mysql_query($updateSQL, $connection) or die(mysql_error());
    }

  17. #17
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    dit donc ...
    tu vas me dire ou tu fais un addslashes sur tes valeurs de $_POST !!

  18. #18
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Un petit conseil pour la suite :
    S'il vous plait, choisissez des noms de variables clair, et en une seule langue ça facilite la maintenance du code et la lecture pour ceux qui sont derriere !

  19. #19
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    donc c'est impossible de faire des addslashes sur le post?
    comment dois je faire?


    dit donc ...
    tu vas me dire ou tu fais un addslashes sur tes valeurs de $_POST !!

  20. #20
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'aivais dèja fais des addslaches sur tous mes post individuellement, mais j'ai toujours la meme erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $_POST['telephone'] = addslashes($_POST['telephone']);
    	$_POST['adresse'] = addslashes($_POST['adresse']);
     
    	$_POST['gestionnaire'] = addslashes($_POST['gestionnaire']);
    	$_POST['activite'] = addslashes($_POST['activite']);

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

Discussions similaires

  1. [MySQL] Insertion avec le caratère apostrophe
    Par King_T dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/04/2008, 11h04
  2. [MySQL] Problème récupération données avec apostrophe
    Par Nata31 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/07/2006, 16h26
  3. Problème d'insertion avec un champ Date/Heure ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/06/2006, 10h37
  4. Problème d'INSERT avec caractères accentués: mysql 5.0
    Par yizashi dans le forum Installation
    Réponses: 2
    Dernier message: 05/04/2006, 10h26
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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