PHP propose plusieurs moyens de se connecter à une base de données MySQL :
- L'extension mysql_ : ce sont des fonctions qui permettent d'accéder à une base de données MySQL et donc de communiquer avec MySQL. Leur nom commence toujours parmysql_. Toutefois, ces fonctions sont vieilles et on recommande de ne plus les utiliser aujourd'hui.
- L'extension mysqli_ : ce sont des fonctions améliorées d'accès à MySQL. Elles proposent plus de fonctionnalités et sont plus à jour.
- L'extension PDO : c'est un outil complet qui permet d'accéder à n'importe quel type de base de données. On peut donc l'utiliser pour se connecter aussi bien à MySQL que PostgreSQL ou Oracle
Vous pouvez ouvrir le fichier de configuration de PHP (qui s'appelle généralement php.ini) et rechercher la ligne qui contientphp_pdo_mysql. Enlevez le point-virgule devant s'il y en a un pour activer l'extension :
1
2
3
4
5
|
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
|
Si vous êtes sous Linux et que vous utilisez XAMPP, recherchez la ligne pdo_mysql.default_socket et complétez-la comme ceci
1
|
pdo_mysql.default_socket = /opt/lampp/var/mysql/mysql.sock
|
Enregistrez le fichier puis redémarrez PHP. Il suffit pour cela de relancer votre logiciel favori, type WAMP, MAMP, XAMPP..
Connexion:
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
Le premier paramètre (qui commence par mysql) s'appelle le DSN : Data Source Name. C'est généralement le seul qui change en fonction du type de base de données auquel on se connecte.
Exemple SELECT:
$reponse = $bdd->query('SELECT * FROM jeux_video');
$donnees = $reponse->fetch();
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$reponse = $bdd->query('SELECT * FROM jeux_video');
$donnees = $reponse->fetch();
echo $donnees['possesseur'];
$donnees = $reponse->fetch();
echo $donnees['possesseur'];
$donnees = $reponse->fetch();
echo $donnees['possesseur'];
?>
Gérer l'exception:
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$reponse = $bdd->query('SELECT nom FROM jeux_video');
while ($donnees = $reponse->fetch())
{
echo $donnees['nom'] . '<br />';
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Préciser le nombre des enregistrements:
'SELECT nom FROM jeux_video LIMIT 0, 10'
LIMIT 0, 20 : affiche les 20 premières entrées.
les variables dans la requette:
$reponse =
$bdd->query('SELECT nom FROM
jeux_video WHERE possesseur=\'' . $_GET['possesseur'] . '\'');
Il est nécessaire d'entourer la chaîne de caractères d'apostrophes comme je vous l'ai indiqué précédemment, d'où la présence des antislash pour insérer les apostrophes : \'
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
// On ajoute une entrée dans la table jeux_video
$bdd->exec('INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUES(\'Battlefield 1942\', \'Patrick\', \'PC\', 45, 50, \'2nde guerre mondiale\')');
echo 'Le jeu a bien été ajouté !';
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
Modifier une ligne:
$bdd->exec('UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32 WHERE nom = \'Battlefield 1942\'');
Supprimer une ligne:
$bdd->exec("delete from jeux_video where nom='pes6'");
Aucun commentaire:
Enregistrer un commentaire