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] pb avec une requête envoyée à une bdd chez free


Sujet :

PHP & Base de données

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut [SQL] pb avec une requête envoyée à une bdd chez free
    Bonsoir,

    j'ai envoyé la requête suivante : INSERT INTO `forum` ( `validee` ) VALUES ( '0');
    à une bdd chez Free. La table "forum" a 2 champs : "texte" de type text et "validee" de type tinyint(1). J'ai obtenu un msg d'erreur alors que j'ai une autre table Mysql en local, ds laquelle j'ai créé la même table et que j'ai fait la même requête via phpmyadmin, et que ça a bien marché. Qqun pourrait-il m'expliquer et me donner la solution ?
    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonsoir,
    il nous faut un peu de code.

    Cordialement,
    DaRiaN.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    En fait, j'ai développé en php une interface qui permet d'envoyer une requête sql à cette base mysql et d'en lire le résultat s'il y en a un (et d'afficher le msg d'erreur s'il y en a un).
    La ligne de code à pb est donc tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query($sql) or die(mysql_error());
    avec ici $sql qui vaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `forum` ( `validee` ) VALUES ( '0');

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Et bien, dans ce cas, montrez nous le message d'erreur.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Le msg d'erreur est tout simplement le suivant :
    INSERT INTO `forum` ( `validee` ) VALUES ( \'0\');
    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 '\'0\')' at line 1

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    L'erreur vient des simples quotes... j'aimerais voir la partie du code qui modifie la variable $sql et toutes les variables qu'elle contient.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Je n'ai vu la réponse que mercredi matin. Le code qui modifie $sql est tout simplement : $sql=$_POST['requete'];
    vu que j'utilise un formulaire. Et la requête que je saisie est : insert into `forum` (`validee`) values ('0')

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Oui, sauf que chez FREE, si mes souvenirs sont bons, magic_quotes est sur ON, donc vous devez passer votre requête à stripslashes pour retirer les slashes inutilement ajoutés.

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    J'ai modifié le code qui envoit la requête ; maintenant, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @$result = mysql_query('".stripslashes($sql)."') or die(mysql_error());
    , mais j'ai tjs le msg d'erreur...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Je viens de faire un test sur l'un des serveurs de FREE. Avec l'ajout de la fonction stripslashes() cela fonctionne parfaitement.

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
      $sql = stripslashes($_POST['requete']);
     
      $result = mysql_query($sql) or die(mysql_error());
     
    ?>
    PS: votre précédent code est totalement buggé.

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Effectivement, avec ce code, ça marche bien : d'abord, ouf ! enfin ! et merci ! Et sinon, pouvez m'expliquer les bugs (que je ne meure pas idiot). En effet, le @ devant $result, je l'ai rajouté en suivant un conseil, et le '".stripslashes($sql)."', je l'avais recopié d'un code existant (sauf qu'au lieu de stripslashes, c'était addslashes), et vu que ça venait d'un site qui tourne bien, je faisais confiance (ça fait moins d'un an que je connais le php, et moins de 2 ans, le html).

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Vous auriez du écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @$result = mysql_query(stripslashes($sql)) or die(mysql_error());
    Au lieu de cela, vous avez considéré la fonction stripslashes comme une chaine de caractères, vous n'avez pas compris le principe des guillemets simples ou doubles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine = 'chaine de caractères '.fonction()." $variable !!!";
    La fonction addslashes() ajoute des \ pour protéger certains caractères, la fonction stripslashes() les retire.

    Chez FREE, magic_quotes est actif, donc les valeurs des formulaires sont passées automatique à addslashes, mais cela rentre en conflit avec certains traitements. Je pense que vous l'avez constaté.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  3. Réponses: 1
    Dernier message: 10/09/2009, 14h21
  4. envoyer une requéte a une autre application web
    Par open_source dans le forum Général Java
    Réponses: 4
    Dernier message: 02/01/2009, 19h49
  5. [SQL]Concaténation avec retour chariot dans une requête
    Par celiaaa dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 09/04/2007, 23h36

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