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

Langage PHP Discussion :

Apostrophes perdues après requête


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2016
    Messages : 147
    Points : 81
    Points
    81
    Par défaut Apostrophes perdues après requête
    Bonjour,

    Quand je récupère mes valeurs (ici des questions), mes apostrophes ne sont plus la ou sont remplacé par un symbole.
    Comment faire pour récupérer ma question complète ? (Je récupère Quelle est ladresse au lieu de quelle est l'adresse).

    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
    <?php
     
    header('Content-Type: text/html; charset=utf-8');
     
    $mysqli = new mysqli("", "", "","");
     
    $ID = $_POST['ID'];
     
    $requete = "SELECT * FROM que_question WHERE ID = '" .$ID. "'";
    $resultat = $mysqli->query($requete);
     
    $retour = array();
    while ($enreg = $resultat->fetch_row()) {     // extrait chaque ligne une à une
     
        $retour[0][0] = utf8_encode($enreg[0]);
        $retour[0][1] = utf8_encode($enreg[1]);
        $retour[0][2] = utf8_encode($enreg[2]);
        $retour[0][3] = utf8_encode($enreg[3]);
        $retour[0][4] = utf8_encode($enreg[4]);
        $retour[0][5] = utf8_encode($enreg[5]);
        $retour[0][6] = utf8_encode($enreg[6]);
    }
     
    echo json_encode($retour);
     
    ?>
    Merci beaucoup !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- pourquoi as-tu besoin de utf8_encode() ?
    La connexion (voir set_charset), la BDD et les tables ne sont pas définis en UTF-8 ?

    2- Mettre $ID directement dans la requête est une GRAVE ERREUR.
    Il faut faire une requête préparée, ou au minimum, utiliser $mysqli->real_escape_string().

    3- A quel moment tu "perds" les apostrophes ?
    • Dans le PHP ($retour),
    • ou dans la récupération du code en JS (que tu ne montres pas) ?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2016
    Messages : 147
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    Honnêtement je ne comprends pas grand chose en encodage..
    Alors tout se passe dans le @retour effectivement, mes apostrophe ne passe pas.
    Mes tables sont en latin1_swedish_ci.
    Ma base est en UTF8_General_ci.
    Je vais essayer de faire une requête préparé à la place de ma grave erreur

    Si tout de même une personne avait une solution.
    Merci.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2016
    Messages : 147
    Points : 81
    Points
    81
    Par défaut
    Alors les apostrophes sont corrigées avec ce système, cependant je n'arrive pas à insérer un paramètre, en mode préparé.

    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
    <?php
     
    header( 'content-type: text/html; charset=utf-8' );
     
    try {
        $strConnection = 'mysql:host=r;dbname='; //Ligne 1
        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
        $pdo = new PDO($strConnection, '', '', $arrExtraParam); //Ligne 3; Instancie la connexion
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
    }
    catch(PDOException $e) {
        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
        die($msg);
    }
     
    $ID = $_POST['ID'];
     
     $stmt = $pdo->query("SELECT * FROM que_question WHERE ID = ?");
     $stmt->bindParam(1, $ID, PDO::PARAM_INT);
     $stmt->execute();
     
    $retour = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($retour);
     
    ?>
    Merci de m'indiquer ma petite erreur

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il vaut mieux en effet utiliser PDO.

    Pour la préparation de la requête, ce n'est pas ->query(), mais ->prepare() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $stmt = $pdo->prepare("SELECT * FROM que_question WHERE ID = :id"); // :id : placer holder "nommé"
     $stmt->bindParam(':id',  $_POST['ID'], PDO::PARAM_INT);
     $stmt->execute();

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2016
    Messages : 147
    Points : 81
    Points
    81
    Par défaut
    Je te remercie énormément !

    Je met en résolu !

    Cordialement.

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

Discussions similaires

  1. [MySQL] problème mysql : apostrophe dans une requête
    Par stars333 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/03/2010, 11h18
  2. PRoblème d'apostrophe dans variable.
    Par jbidou88 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/06/2007, 15h57
  3. [MySQL] Problème d'apostrophes dans ma requête Update
    Par method_man dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/04/2007, 17h06
  4. [MySQL] Problème d'apostrophes dans insertion sql
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 30/05/2006, 17h20
  5. problème d'apostrophe dans mes requetes
    Par kirian dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/05/2006, 13h06

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