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 :

[SQL] OK en local erreur sur serveur !


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut [SQL] OK en local erreur sur serveur !
    hello !

    Le forum m'a enlevé une belle épine dans la journée.... (merci !)
    En résumé :
    1) formulaire (destiné à insérer une enregistrement dans une table)
    2) page réception (post) => le client vérifie ses données tapées passe =>
    3) la page 2 envoie (post) a page 3 une variable qui contient la requete INSERT
    çà marche au poil en local (EasyPhp 1.8) grâce à une astuce donnée par le forum => la tranmission de la variable à la requète !
    la page 2 transmet par
    (post) value="<?php echo htmlspecialchars($sql); ?>"
    la page 3
    $requete =@mysql_query($sql) or die( mysql_error() ) ;
    OK en local
    Le serveur me retourne
    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 '\'appartement confortable
    \',\' 09\',\' PARIS\',\' 75 \', \'14\',

    comprend pas !

    Merci, je lirai demain => au lit, je suis naze

    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

  2. #2
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    A prioris ta requète SQL est mal construite : tu essaies d'insérer une chaine de caractère qui possède des ' qui est justement le caractère délimiteur de chaines pour MySql. Quand tu construis ta requète SQL, fais quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q = "INSERT INTO table SET txt='".addslashes($txt)."'";
    Entre ton serveur et ton EseayPHP, la config des magic quotes est surement différente : http://fr2.php.net/magic_quotes
    Etre à son compte, y'a rien de mieux !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Merci mais pas compris !
    les , delimitent les champs ! !
    Faudrait me donner un exemple colet de requete (avec 2 champs)
    INSERT INTO $table nom_champ1, nom_champ2..
    '$champ1','$champ1'...

    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

  4. #4
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    Je parlais de délimiteurs de chaines.
    Exemple si tu veux ajouter la chaine de caractère suivante dans un champ texte :

    L'aéroport n'est pas loin
    la requète sera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `table` SET champ='L\'aéroport n\'est pas loin'
    ' est le délimiteur
    \ est le caractère d'échappement

    (corrigez moi si je me trompe dans les termes)

    Sans délimiteur ni échappement, MySql n'aurait aucun moyen de savoir où commence et où finit une chaine...
    Etre à son compte, y'a rien de mieux !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Pour éviter les embrouilles :
    page 1 = formulaire post
    page 2 = traitement formulaire et création variable pour la requête
    page3 (post) j'envoie la requête

    La variable de requête (41 champs en varchar)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql="INSERT  INTO biens (description, type, ville, departement, region,surface,terrain,jour,mois,an,age,vendu,viager,etages,nb_chambres,chambres,bureau,cuisine,bains,salon,	sam,extras,grenier,cave,notes,ecoles,commerces,pratique,prix,pays,fax,nom,prenom,adresse1,adresse2,ville_perso,cp,telephone,telephone2)
     VALUES ('$description',' $type',' $ville',' $departement', '$region', '$surface',' $terrain','$jour','$mois','$an','$age','$vendu','$viager','$etages','$nb_chambres','$chambres','$bureau','$cuisine','$bains','$salon','$sam','$extras','$grenier','$cave','$notes','$ecoles','$commerces','$pratique','$prix','$pays','$fax', '$nom','$prenom','$adresse1','$adresse2','$ville_perso','$cp','$telephone','$telephone2') ";
    Je poste par 
    <input type="hidden" name="sql" value="<?php echo htmlspecialchars($sql); ?>" />
    page de réception et envoi de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql=$_POST['sql'];
      $requete =@mysql_query($sql) or die( mysql_error() ) ;
    L'astuce dans input donnée hier par le forum pour interpréter $sql.
    Easyphp 1.8 => çà fonctionne au poil !

    Le serveur (php et mysql plus récent) = erreur
    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

  6. #6
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    Avec ce que je t'ai expliqué tu avais toutes les cartes en main pour solutionner ton problème.

    Try this :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql=$_POST['sql'];
    $requete =@mysql_query(addslashes($sql)) or die( mysql_error() );
    Etre à son compte, y'a rien de mieux !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Sorry, suis pas une pointure sql !

    Je teste, je tiens au courant
    merci
    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    PERDU

    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 '\'\',\' \',\' \',\' \', \'\', \'\',\' \',\'\',\'\',\'2007\',\'\'
    La hotline (PHPNET) va me répondre sous peu... (mail)

    M'enfin si tu veux tester autre chose...
    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

  9. #9
    Membre actif Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Points : 278
    Points
    278
    Par défaut
    Essaie l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql=$_POST['sql'];
    $requete =@mysql_query(stripslashes($sql)) or die( mysql_error() );
    Etre à son compte, y'a rien de mieux !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Chapeau bas ! !
    çà maaaaaaaaarche.
    Local et serveur

    Merci beaucoup, çà m'a gonflé mais c'est bon d'apprendre !
    So long camarade
    Quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins vite de ce que l'on croit savoir...

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

Discussions similaires

  1. [Flex4] Appli flex ok en local / erreur sur le serveur
    Par nma dans le forum Flex
    Réponses: 3
    Dernier message: 06/06/2011, 14h57
  2. [Tableaux] array_push() erreur sur serveur
    Par Givemefive dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2007, 16h26
  3. Erreur sur serveur LDAP
    Par lolo_ici_et_la dans le forum Réseau
    Réponses: 1
    Dernier message: 22/09/2006, 21h26
  4. [Upload] move_upload_file erreur sur serveur
    Par Greggggggg dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2006, 15h54
  5. Erreur sur serveur lié
    Par k-lendos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/03/2004, 15h21

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