Se connecter à MySQL avec PDO

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 20 nov. 2016 à 15:08
 Utilisateur anonyme - 21 nov. 2016 à 19:18
Bonjour
Je souhaiterai me connecter à Mysql, j'ai une erreur de ouf c'est à dire une erreur de syntaxe.
Voici l'erreur
Parse error: syntax error, unexpected '{' in (l'erreur se situe à la première accolade du try)
Si vous pouvez me venir en aide. Je vous remercie
<?php
        $PARAM_hote        	='************';     	
        $PARAM_nom_bdd     	='**********'; 	
        $PARAM_utilisateur 	='**********';          	
        $PARAM_mot_passe   	='*************';              	

    	try
	{
            $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe);
            $bdd->exec("SET CHARACTER SET utf8");
            $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	}

    	catch(Exception $e)
	{
            echo 'Impossible de se connecter à la base de donnée</br>';
            echo 'Erreur : ' .  $e->getMessage() . '<br />';
            echo 'N° : ' .      $e->getCode();
    	}
?>

20 réponses

Utilisateur anonyme
20 nov. 2016 à 16:16
Bonjour

C'est probablement que tu es en train d'utiliser PHP4.
Si tu ne sais pas quelle version tu utilises, exécute ce script d'une seule ligne :

<?php phpinfo(); ?>


et tu verras.
Si ton site est en ligne, ton hébergeur t'offre certainement la possibilité de passer à une version supérieure.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2016 à 16:31
Bonjour
Effectivement je suis sur mon hébergeur en php 4.4
J'ai la possibilité de changer il y a plusieurs version à ton avis je sélectionne laquelle?
5.4
5.5
5.6
7.0
7.1
Merci
0
Bonjour

A priori, je te conseille de prendre la plus récente.
S'il s'agit d'un site qui existe déjà, tu auras peut-être intérêt à prendre, au moins dans un premier temps, une version intermédiaire comme 5.6, histoire de ne pas avoir toutes les adaptations à faire à la fois.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2016 à 18:32
Bonjour
Pour la connexion c'est bon. Par contre je viens de rencontrer un autre problème en ayant mis la version 5.6 tous mes accents du site deviennent des points d'interrogations.
Je suis revenu à la version 4.4 pour voir et là miracle les accents sont des accents.
As tu une idée sur la question s'il te plait.
Je te remercie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tous les accents, vraiment tous ? Ça m'étonne un peu.
Si c'est seulement sur les textes que tu affiches avec une fonction comme htmlspecialchars, ça peut s'expliquer : l'encodage par défaut utilisé par cette fonction (et sans doute d'autres) a évolué avec les versions de php.

As-tu une idée de ce que c'est l'encodage ?
Sais-tu lequel tu utilises ?
L'éditeur que tu utilises sauvegarde-t-il bien tes pages avec le bon encodage ?
Et ta connexion à ta base de données tient-elle bien compte de cet encodage aussi ?
Edit : en relisant ton premier script, je m'aperçois qu'il y a bien ce qu'il faut au moins au niveau de la base de données, si tu travailles bien en utf8.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2016 à 19:58
oui en fait e me suis amusé 2 fois de suite en changeant 4.4 par 5.6 et vice versa c'est une histoire de ouf...
Et je ne veux pas modifier toutes les pages de mon site en fait. mais j'ai quand même essayé de mettre une page en ut8 car mes pages sont codé en cp-1252 avec mon éditeur et cela n'a rien donné de concluant.
Là actuellement en 4.4 sur mon hébergeur qui est OVH tous les accents son normaux mais j'ai une connexion avec L'extension mysql_ alors c'est pour cette raison que je voulais passer avec L'extension PDO.
C'est vraiment dingue....
va jeter un oeil sur mon site
http://www.cliquedepapyclic.cliquedecruet.fr
        $PARAM_hote		='**********'; 
        $PARAM_nom_bdd		='**********'; 
        $PARAM_utilisateur 	='*********'; 
        $PARAM_mot_passe 	='***********';
        
        try {
            $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe);
            $bdd->exec("SET CHARACTER SET utf8");
            $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }

        catch(Exception $e) {
            echo 'Impossible de se connecter à la base de donnée</br>';
            echo 'Erreur : ' .  $e->getMessage() . '<br />';
            echo 'N° : ' .      $e->getCode();
        }
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 20/11/2016 à 20:23
Bonjour,

Pour l'utf8, essaye de modifier ta connexion comme ceci :
$bdd =new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd.'; charset=utf8',$PARAM_utilisateur, $PARAM_mot_passe);


Après, pour que ton site soit en UTF8.. il suffit de suivre ceci :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
0
Utilisateur anonyme
20 nov. 2016 à 20:22
Non, il n'y a rien de dingue, il y a que tu ne maîtrises pas l'encodage.

Si ta page est encodée en cp-1252, pourquoi parles-tu d'utf8 dans ta connexion PDO ?
Comment fais-tu pour changer une page encodée en cp-1252 en une page encodée en utf8 ?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2016 à 23:03
j'ai modifié la ligne mais rien n'a changé.
En ce qui concerne les pages encodé en utf8 j'ai modifié 3 pages rien n'y a fait.
Ce que je trouve dingue c'est que toutes mes pages sont encodé en cp-1252 et lorsque je suis passé en php 5.6 les accents sont devenu des ?
Par contre je suis revenu en php 5.4 et là miracle tout baigne.
0
Utilisateur anonyme
20 nov. 2016 à 23:23
Je te pose des questions pour avancer dans le diagnostic.
Tu n'y réponds pas, donc on n'avance pas.
Il n'y a rien de dingue et il n'y a pas de miracle.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 11:08
Bonjour
Actuellement j'utilise mysql_query mes pages sont encodé en cp-1252 je suis en php 4.4 et je n'ai pas de problème d'accent.

Maintenant je voudrais essayer d'utiliser PDO passer en php 5.6 et j'ai un problème avec les accents le simple fait de changer sur mon hébergeur la version de PHP.

oui en effet pour changer mes page encodé en cp-1252 en utf8 je modifie dans mon éditeur qui est par défault cp-1252 et je modifie le meta comme cela.
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />

<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8\" />

Je n'ai pas fait les choses comme il faut, mais en tout cas il y a les point d'interrogations à la place des accents et malheureusement je ne vois pas ce que je peux faire.
Merci
0
Utilisateur anonyme
21 nov. 2016 à 12:26
Si tu vois des points d'interrogations à la place des lettres accentuées, c'est que tu déclares que ta page est en utf-8, alors que tu lui envoies des caractères qui ne sont pas en utf-8.

J'ai l'impression que quand tu dis que tu encodes tes page en utf-8, tu te contentes de changer la balise meta.
Es-tu bien conscient que cette balise NE CHANGE PAS l'encodage de ta page ?
Elle trompe ton navigateur en lui faisant croire que ta page est en utf-8 alors qu'en réalité elle est toujours en utf-8.

Mais j'ai l'impression que tu essayes simultanément de changer de version de PHP, de changer d'encodage et de passer de mysql_ à PDO.
Alors oublions dans un premier temps utf-8 et PDO et regardons uniquement le changement de version de PHP.
Que se passe-t-il si tu prends une page qui marche bien avec mysql_ et charset=ISO-8859-1 et l'ancienne version de PHP, et que tu ne changes QUE la version de PHP ?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 12:58
Bonjour
Là actuellement j'utilise mysql_query et ma version de php est 5.4 l'encodage est ISO-8859-1. Tout fonctionne bien au niveau des accents sur tout le site.

Par contre si je modifie uniquement la version de PHP sur mon hébergeur et je passe avec 5.6 ou superieur les accents deviennent des ?

Voilà
0
Utilisateur anonyme
21 nov. 2016 à 13:42
Peux-tu donner un lien avec une page où il y a des points d'interrogation ?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 13:58
je viens à l'instant de changer de version c'est à dire en php 5.6
voici l'url du site c'est ça que tu veux?

http://www.cliquedepapyclic.cliquedecruet.fr
0
Utilisateur anonyme
21 nov. 2016 à 15:33
Oui c'est bien ce que je voulais voir, merci.
Je pense que les textes où le problème se pose n'ont pas été tapés tels quels dans le code source de la page, mais sont le résultat d'un traitement effectué en php.
Peux-tu mettre par exemple sur (cjoint.com) le code source php de la page que j'ai vue ? En cachant les mots de passe s'il y en a, bien sûr.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 16:28
Je te oint le fichier historique.php

onglet=>L'association=Notre historique

https://www.cjoint.com/c/FKvpCpN1NM3
0
Utilisateur anonyme
21 nov. 2016 à 16:37
Bien reçu, je regarde
0
Utilisateur anonyme
21 nov. 2016 à 16:59
En première approche, j'avoue que je suis perplexe. Le problème se pose sur du html pur, même pas traité par PHP et qui n'a donc aucune raison de se comporter différemment selon les versions de PHP.
Comme j'ai aussi un hébergement ovh, je fais l'essai de mon côté.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 17:24
là je retourne sur sur l'ancienne version php 5.4 et je ne fait absolument rien d'autre et tout va redevenir à la normal.
0
Utilisateur anonyme
21 nov. 2016 à 17:34
J'ai le même phénomène que toi (ça te rassure ?)
Après analyse, il apparaît que le serveur envoie dans les en-têtes http l'info suivante :
Content-Type:text/html; charset=UTF-8
qui est en contradiction avec ta propre en-tête html :
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
(attention, ne pas confondre en-tête http et en-tête html)

Le navigateur qui reçoit les deux semble donner la priorité à l'utf-8, et comme ce que tu envoies derrière n'est pas de l'utf-8, il remplace par des points d'interrogation.
J'ignore pourquoi il force cette en-tête et je n'ai jamais creusé la question puisque je travaille en utf-8 pratiquement depuis le début.

Il y a un moyen très simple de contourner ce problème, car on peut forcer aussi l'en-tête http pour le rendre cohérent avec celui de html. C'est l'instruction PHP header
À appeler en tout début de script, avant l'envoi de données au client donc avant le <!DOCTYPE :
header("Content-Type: text/html; charset=ISO-8859-1");

Tu peux inclure la ligne dans ton libs/init.php pour mettre à jour tous les fichiers à la fois.
Sachant qu'il faudra retirer cette ligne plus tard, quand tu basculeras en utf-8 !
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2016 à 19:08
J'ai bien compris tes expliacations je te remercie.
Super cool tout est rentré dans l'ordre je suis avec la version php 5.6 donc si je laisse l'encodage tel qu'il est, je garde c'est ligne en début de fichier libs/init.php
<?php header("Content-Type: text/html; charset=ISO-8859-1");?>
Maintenant je vais essayer de passer en PDO....
Merci
0
Utilisateur anonyme
21 nov. 2016 à 19:18
De rien et bon courage pour la suite :-)
0