mercredi 23 février 2011

PHP niveau 3

 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 : \'
Ajouter une ligne:

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