Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 10h10   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut connexion à MySQL via PDO

Bonjour,

je tente de me connecter à une base MySQL via PDO. Avant, je le faisais avec mysql_connect :
Code :
1
2
3
4
5
6
 
function connect()
if (mysql_connect(MYHOST,MYUSER,MYPASS)) echo "connexion NOK<br>";
if (!mysql_select_db("---",$id_conn)) echo "connexion base foirée"; else echo"<br>"; 
return($id_conn);
}
et là, j'ai essayé ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
 
try
{
$PARAM_hote='---'; // le chemin vers le serveur
$PARAM_port='---';
$PARAM_nom_bd='---'; // le nom de votre base de données
$PARAM_utilisateur='---'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='---'; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
 
catch(Exception $e)
{
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
}
 
?>
mais il bloque dès le try :
Citation:
Parse error: syntax error, unexpected '{' in /homepages/18/d246623212/htdocs/bdd/connect_pdo.php on line 4
qu'est-ce qu'il faudrait faire ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h13   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
vérifier ta version de PHP
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h21   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Bien vu ; j'avais oublié de mettre le PHP5 ; cela a changé l'erreur mais il y en a encore une :
Citation:
Erreur : SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'vercorshandisport.org' (111)
N° : 2003
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h23   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
si ton serveur sql est sur le même serveur que PHP met juste : localhost
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h27   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Voilà ce que j'ai avec "localhost" :
Citation:
Erreur : SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
N° : 2002
Mais j'ai aussi lu qu'en PHP5, il fallait activer PDO en modifiant le PHP.INI. Je ne sais même pas si je peux y accéder ; j'ai interrogé l'hébergeur...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h27   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par laurentSc Voir le message
Voilà ce que j'ai avec "localhost" :
quand tu le fais avec mysql_connect ça marche ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h31   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Oui, ça, ça marche (je viens de refaire l'essai, et successful)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h38   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'es sous quelle client : mysqlnd ou sous libmysql ? (a voir dans ton phpinfo)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h45   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai fait une recherche dans PHPINFO sur les deux termes et il n'en trouve aucun.
Le seul truc qui parle de client, c'est -L/usr//lib -lmysqlclient (MYSQL_LIBS )
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h48   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par laurentSc Voir le message
J'ai fait une recherche dans PHPINFO sur les deux termes et il n'en trouve aucun.
Le seul truc qui parle de client, c'est -L/usr//lib -lmysqlclient (MYSQL_LIBS )
pour mysql : Client API version
pour mysqli : Client API library version
pour PDO_MySQL : Client API version
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h52   #11
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Client API version : 5.0.92
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h55   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par laurentSc Voir le message
Client API version : 5.0.92
donc pas sous mysqlnd, quand tu fais localhost sous mysql_connect ça marche aussi ?
(t'es chez quelle hébergeur) ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 11h08   #13
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
quand tu fais localhost sous mysql_connect ça marche aussi ?
Non, je n'avais pas modifié le nom du host, mais si je mets localhost :
Citation:
Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)
Citation:
(t'es chez quelle hébergeur) ?
1&1
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 11h19   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pas le même socket dans la conf, mais c'est pas grave, t'as pas une autre adresse pour le serveur genre : dbxxxx.1and1.fr
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 11h33   #15
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Oui, exactement, et dans ma tentative de connexion via pdo, je viens de remettre ce nom de hôte à la place de "localhost" et
Citation:
Erreur : SQLSTATE[28000] [1045] Access denied for user 'u49439467'@'212.227.29.55' (using password: YES)
N° : 1045
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 00h02   #16
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Il faut pourtant bien que je passe à PDO, puisqu'en PHP6, il n'y aura plus que ça.
Pour être sûr de ne pas me tromper, peux-tu me donner l'équivalence entre les paramètres de mysql et ceux de PDO ?

Pour me connecter via mysql, je faisais :
config.php :
Code :
1
2
3
4
5
<?php
define("MYHOST","---");
define("MYUSER","---"); 
define("MYPASS","---");
?>
et connect.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
define("DBNAME","---");
 ini_set('display_errors', 1);
  ini_set('log_errors', 1);
 
 
 
function error_handler($error_type, $string_error, $file_error, $line_error){
---
}
 
set_error_handler('error_handler');
 
function connect()
{
include_once("config.php");
($id_conn=mysql_connect(MYHOST,MYUSER,MYPASS))or trigger_error (mysql_error(), E_USER_ERROR); 
mysql_select_db(DBNAME,$id_conn) or trigger_error (mysql_error(), E_USER_ERROR); 
 
 
return($id_conn);
}
?>
et avec PDO, j'ai :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
 
try
{
$PARAM_hote='---'; // le chemin vers le serveur
$PARAM_port='---';
$PARAM_nom_bd='---'; // le nom de votre base de données
$PARAM_utilisateur='---'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='---'; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
 
catch(Exception $e)
{
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
}
 
?>
Peux-tu me donner les correspondances entre les 4 constantes mysql (MYHOST,MYUSER,MYPASS,DBNAME) et les 4 variables requises pour PDO (le port mis à part ?)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 09h50   #17
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par laurentSc Voir le message
Il faut pourtant bien que je passe à PDO, puisqu'en PHP6, il n'y aura plus que ça.
c'est faux, et PHP 6 n'existe pas/plus la prochaine version sera la 5.4 (y'a de grande chance)
Et il y aura toujours les extensions mysql, mysqli et PDO que ça soit pour la 5.4 que pour l'ancien projet de la version 6

sinon dans ton premier code le set_error_handler sert a rien pour le debug de l'extension mysql il faut activer le trace_mode ( ini_set('mysql.trace_mode', true) )
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h08   #18
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
c'est faux, et PHP 6 n'existe pas/plus la prochaine version sera la 5.4 (y'a de grande chance)
Et il y aura toujours les extensions mysql, mysqli et PDO que ça soit pour la 5.4 que pour l'ancien projet de la version 6
Donc, ils disent n'importe quoi dans le site du zéro ? :
Citation:
Enfin, il faut signaler qu'à partir de PHP 6, c'est le système par défaut activé pour se connecter à une base de données, il est donc nécessaire de commencer à réécrire une partie de ses applications dans ce sens afin de préparer l'avenir (pas mal d'hébergeurs ont PHP 5 avec PDO et le driver pour MySQL installé donc n'hésitez pas à utiliser massivement PDO ).
Citation:
sinon dans ton premier code le set_error_handler sert a rien pour le debug de l'extension mysql il faut activer le trace_mode ( ini_set('mysql.trace_mode', true) )
Depuis que j'ai fait cette modif, j'ai le warning suivant, après un mysql_query :
Citation:
Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h17   #19
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pour le warning il suffit de lire la doc de mysql_free_result
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h36   #20
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
pour le warning il suffit de lire la doc de mysql_free_result
Si j'avais lu le contenu du warning, je n'aurais pas eu besoin de poser la question , mais je ne les lis jamais vu que souvent, ça ne décrit pas la cause, mais juste une erreur induite par le problème ; en général, je me contente du n° de ligne pour savoir où regarder, mais avec une ligne qui n'existe pas, ici, je n'étais pas aidé !
Cela dit, même s'ils disent n'importe quoi, je souhaite quand même me mettre à PDO : te serait-il donc possible de répondre à mon post de 00h02 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h58.


 
 
 
 
Partenaires

Hébergement Web