Sign in to follow this  
Plasminds

Lire des données d'une base de donnée MySQL : l'extension PDO

2 posts in this topic

11.jpg

Si vous avez commencé à créer votre propre site web, vous devez à un moment donné connecter votre site à votre base de donnée (BDD ou DB pour database). Pour les besoins du tutoriel, nous allons nous connecter à notre base de donnée en local.

Il y a 3 méthodes pour se connecter à sa base de donnée : la fonction mysql_ (aujourd'hui devenue obsolète, à ne pas utiliser), la fonction mysqli_ (valable uniquement pour une BDD utilisant MySQL) et PDO (la méthode la plus récente, valable quelque soit le système).

Comme vous l'avez bien compris, nous allons donc nous intéresser à la méthode utilisant PDO.

Tout d'abord, il faudra vérifier que l'extension est activée sur votre serveur. Pour cela, allez dans le fichier de configuration de php (généralement php.ini) et recherchez les lignes contenant "php_pdo". Vous arriverez sur ceci :

extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

extension=php_pdo_sqlite.dll

;extension=php_pdo_sqlite_external.dll

La ligne qui nous intéresse est "extension=php_pdo_mysql.dll". Vérifiez qu'il n'y ait pas de point-virgule à cette ligne, et s'il n'y en a une, enlevez là. Pour se connecter avec d'autres types de base de données, comme PostgreSQL, il vous suffit de répéter l'opération avec la ligne ";extension=php_pdo_pgsql.dll".

Par la suite cherchez toujours dans le même fichier "display_errors" et vérifiez que la ligne affiche "display_errors = On". Cela permettra à PHP d'indiquer les erreurs rencontrées !

Pour se connecter à MySQL avec PDO, il suffira d'entrer le code PHP suivant :

$bdd = new PDO('mysql:host=host;dbname=nombdd;charset=utf8', 'utilisateur', 'mot de passe');
?>[/php]

L'host est l'hôte de la DB, dbname fait référence au nom de votre base de donnée, charset=utf8 permet d'encoder votre page en UTF-8, permettant les accents. A la place de 'utilisateur' il faudra mettre le nom de l'utilisateur de la BDD et à la place de 'mot de passe', votre mot de passe.

Comme nous travaillons en local, le code devient le suivant :

[php] $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'motdepasse');
?>

Cette ligne de code est ce qu'on appelle un objet $bdd. Contrairement à ce que l'on pourrait pensé, ce n'est pas une variable ; cet objet représente la connexion à votre base de donnée. Nous en reparlerons dans un prochain tutoriel, sur la POO (Programmation Orientée Objet) :D

Si vous avez renseigner toutes les informations correctement, normalement vous devriez avoir une page blanche. Si ce n'est pas le cas, PHP va vous renvoyez une erreur, sauf que celle-ci contiendra toute la ligne, dont le mot de passe ! Pour éviter ceci, nous allons tester la présence d'erreur. Cela devrait ressembler à ceci :

try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'mot de passe');
}
catch (Exception $e)
{
die('Echec lors de la connexion : ' . $e->getMessage());
}
?>
[/php]

PHP va tout d'abord tester le code dans le bloc try ; si tout se passe bien, on passe à la suite. Sinon, on rentre dans le bloc catch et PDO va nous renvoyer ce qu'on appelle une exception, qui va "capturer" l'erreur et arrêter l'exécution de la page et vous renvoyer le message (grâce à die).

Maintenant, pour récupérer les informations de la base de donnée (symbolisée par l'objet $bdd définit précédemment), nous allons faire ce que l'on appelle une "requête" à MySQL et récupérer le contenu dans un nouvel objet, appelé $reponse). Le code devrait maintenant ressembler à ça :

[spoiler]

[php] try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'mot de passe');
}
catch (Exception $e)
{
die('Echec lors de la connexion : ' . $e->getMessage());
}

$reponse = $bdd->query('SELECT unecolonne FROM votretable');
?>

Pour ne pas tout traiter d'un seul coup, nous allons utiliser la méthode fetch(), couplée à une boucle while afin d'afficher bloc par bloc les valeurs. Cela nous donne finalement :


{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'mot de passe'); // connexion à MySQL
}
catch (Exception $e)
{
die('Echec lors de la connexion : ' . $e->getMessage()); // En cas d'erreur, un message s'affiche et arrête l'exécution
}

$reponse = $bdd->query('SELECT unecolonne FROM votretable'); // Sélection de la colonne qui vous intéresse en langage MySQL
while ($donnees = $reponse->fetch()) // Chaque valeur sera affichée une à une
{
   ?>


     ID :


}
$reponse->closeCursor();
?>
try

Bravo ! Vous avez réussi à afficher vos premières données ! Le code n'est pas tout à fait optimisé, vous pouvez proposer vos corrections dans les en commentaire !

Share this post


Link to post
Share on other sites

Merci pour ce tutoriel, enfin ! Le PDO commence à être utilisé par pas mal de monde :)

Ton dernier code est optimisé, tu as pris l'exemple de php.net pour ta première partie, donc ça l'est :)

try

{

$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'mot de passe'); // connexion à MySQL

}

catch (Exception $e)

{

die('Echec lors de la connexion : ' . $e->getMessage()); // En cas d'erreur, un message s'affiche et arrête l'exécution

}
Vous pouvez voir dans ce code
charset=utf8
attention à bien avoir mis votre page en UTF8 également au niveau du HTML.

entre les balises 


ou bien 



Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this