Signaler

Se connecter à MySQL avec PDO [Résolu]

Posez votre question LaChaux78 42Messages postés lundi 25 juillet 2016Date d'inscription 6 décembre 2016 Dernière intervention - Dernière réponse le 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();
    	}
?>
Afficher la suite 
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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();
        }
jordane45 15438Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 8 décembre 2016 Dernière intervention - 20 nov. 2016 à 20:22
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 :
http://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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 ?
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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 ?
Ajouter un commentaire
Utile
+0
moins plus
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à
Ajouter un commentaire
Utile
+0
moins plus
Peux-tu donner un lien avec une page où il y a des points d'interrogation ?
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
Je te oint le fichier historique.php

onglet=>L'association=Notre historique

http://www.cjoint.com/c/FKvpCpN1NM3
le père. 5707Messages postés mardi 15 mai 2012Date d'inscription 8 décembre 2016 Dernière intervention - 21 nov. 2016 à 16:37
Bien reçu, je regarde
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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é.
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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 !
Ajouter un commentaire
Utile
+0
moins plus
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
le père. 5707Messages postés mardi 15 mai 2012Date d'inscription 8 décembre 2016 Dernière intervention - 21 nov. 2016 à 19:18
De rien et bon courage pour la suite :-)
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !