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 et php5.6


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut Apostrophes et php5.6
    Bonjour,

    Je reprends le fil bien que ce ne soit plus tout à fait la même chose.
    J'ai donc migré tant bien que mal en php 5.6.
    Immédiatement j'ai été confronté à l'affichage erroné des caractères accentués (remplacés par �) et j'ai forcé le charset avec l'entête suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php header('Content-Type: text/html; charset=ISO-8859-1'); 
    ini_set( 'default_charset', 'ISO-8859-1' ); ?>
    J'ajoute que ma bdd est en utf-8.

    Et dès lors, les � ont disparu mais je me suis aperçu que les lignes de la bdd qui contenaient des apostrophes ne sont pas lues correctement et provoquent une erreur de syntaxe sql!
    Un peu génant si l'on considère que cela concerne 200 ou 300 lignes.

    Que puis-je faire ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    et provoquent une erreur de syntaxe sql
    Ca m'ettonerait que les données provenant d'une requête provoquent rétroactivement une erreur sur la requête.

    Quelle erreur obtiens-tu ? Comment construis-tu la requête qui est en erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Oui, c'est curieux, les lignes contenant les apostrophes s'affichent bien à l'issue d'une requête SELECT, mais elles doivent passer en variables comme composantes d'une liste constituant une commande (vpc)
    Et à l'affichage de cette commande, l'erreur suivante s'affiche:
    "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 'Heaven Scent'', '160-200', '0')' at line 1

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as pas répondu à
    Comment construis-tu la requête qui est en erreur ?
    La bonne façon c'est d'utiliser une requête préparée PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Merci de ton aide.

    En fait, il y a 4 requêtes en jeu et le message d'erreur obtenu n'est pas typiquement une erreur SQL et elle bloque la page, de sorte que le code source n'indique rien d'autre que cette erreur vue à l'écran.
    Toutes les requêtes sont sur le même modèle, mysql.
    En voici une:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $colname_rsListe = "1";
    if (isset($_GET['commandeID'])) {
      $colname_rsListe = $_GET['commandeID'];
    }
    mysql_select_db($database_essai, $essai);
    $query_rsListe = sprintf("SELECT * FROM listesf WHERE commandeID = %s ORDER BY reference ASC", GetSQLValueString($colname_rsListe, "int"));
    $rsListe = mysql_query($query_rsListe, $essai) or die(mysql_error());
    $row_rsListe = mysql_fetch_assoc($rsListe);
    $totalRows_rsListe = mysql_num_rows($rsListe);
    Je ne connais pas PDO mais après enquête, tu as certainement raison, c'est et ce sera la meilleure méthode.
    Mais peut-on mélanger mysql et PDO?

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Après reflexion, il semblerait que ce soit ça qui bloque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $insertListe = sprintf ("INSERT INTO listesf (commandeID, reference, quantite, prixArticle, nom, pres, dispo) VALUES ('$commandeID', '$reference', '$quantite', '$prixArticle', '$nom', '$pres', '$dispo')");

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/08/2004, 17h49
  2. Réponses: 3
    Dernier message: 10/06/2004, 22h34
  3. Apres l'accent l'apostrophe
    Par man80 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/05/2004, 16h47
  4. Stocker un apostrophe
    Par Bowen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/03/2004, 00h00
  5. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39

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