Programmation PHP/Bases de données

Un livre de Wikibooks.
Aller à : Navigation, rechercher
Programmation PHP
Programmation PHP
Plan
Modifier ce modèle

Soit la base de données BDDNAME contenant la table NOMTABLE. Voici la table :

  • ID : id
  • NOM : chaine de caractères
  • PRENOM : chaine de caractères
  • ADRESSE1 : chaine de caractères
  • ADRESSE2 : chaine de caractères
  • TEL1 : entier long
  • TEL2 : entier long


Cette base de données contient les deux enregistrements suivants :

0 "DUPOND" "LOUIS" "1,Petite rue" "2,Petite rue" 0543454654 0543454352
1 "DUSS" "Jean-Claude" "1,Grande rue" "2, Grande rue" null null


Sections

MySQL [modifier]

Constantes utilisées par la suite :

Nom de la BDD : "BDDNAME"
Adresse de la BDD : "BDDADRESSE"
Login d'accès à la BDD : "BDDUSER"
Mot de passe pour accéder à la BDD : "BDDPASS"
Exemple d'accès à une base de données MySQL
<?
$user="root";
$pass="";
$db="divers";
$table="demande_intervention";
$link=mysql_connect("localhost",$user,$pass);
if (!$link)
die("Impossible de se connecter à mysql");
mysql_select_db($db,$link)
or die ("Impossible d'ouvrir $db :".mysql_error());
$query="insert into $table values($znom,$ztel,$znomach,zlieu,zdate)";
mysql_query($query,$link)
or die("Impossible d'ajouter des nouvelles données".mysql_error());
mysql_close($link);
?>

Exécution d'une requête sur une base de données MySQL [modifier]

Maintenant que nous sommes connectés à notre base de données, il est possible d'executer des requêtes dessus. En voici un exemple

Exploiter une requête de type SELECT (avec mysql_fetch_assoc)
    $requete = "SELECT * FROM NOMTABLE";
    $res = mysql_query($requete);
    //On obtient alors tous les enregistrements présents dans la table nom table, et pour exploiter les enregistrements, on peut boucler de la manière        suivante :
    while ($enregistrement = mysql_fetch_assoc ($res) ) {
        $nom = $enregistrement['NOM'];
        $prenom = $enregistrement['PRENOM'];
        $adresse1 = $enregistrement['ADRESSE1'];
        $adresse2= $enregistrement['ADRESSE2'];
        $tel1 = $enregistrement['TEL1'];
        $tel2 = $enregistrement['TEL2'];
    }

De cette manière on récupère un tableau associatif sous la forme Clé->Valeur pour chacun des enregistrements retournés par la requête.
Il existe d'autres méthodes ...

  • mysql_num_rows () : retourne le nombre de lignes données par la requete;
  • mysql_fetch_row () : identique à mysql_fetch_assoc mais retourne un tableau simple indice->valeur.
  • mysql_fetch_object () : identique à mysql_fetch_assoc mais retourne un objet.

Exemple :

Exploiter une requête de type SELECT (avec mysql_fetch_object)
    $requete = "SELECT * FROM NOMTABLE";
    $res = mysql_query($requete);
 
    while ($enregistrement = mysql_fetch_object ($res) ) {
       $nom = $enregistrement->NOM;
       $prenom = $enregistrement->PRENOM;
       $adresse1 = $enregistrement->ADRESSE1;
       $adresse2= $enregistrement->ADRESSE2;
       $tel1 = $enregistrement->TEL1;
       $tel2 = $enregistrement->TEL2;

Fermeture d'une connexion à la base de données MySQL [modifier]

//Ferme la connexion MySQL
mysql_close ($ressource);

SQLite [modifier]

SQLite est le moteur de base de données intégré à php5.

Se connecter à une base de données SQLite [modifier]

// On se connecte à la base<br />
// CHEMIN_BDD constitue de chemin physique de la base de données<br />
$db = new SQLiteDatabase(CHEMIN_BDD);

Exécution d'une requête sur une base de données SQLite [modifier]

Maintenant que nous sommes connectés à notre base de données, il est possible d'executer des requêtes dessus. En voici un exemple

$requete = "SELECT * FROM NOMTABLE";
$res = $db->arrayQuery ($requete, SQLITE_ASSOC);

On obtient alors tous les enregistrements présents dans la table nom table, et pour exploiter les enregistrements, on peut boucler de la manière suivante :

foreach($res as $enregistrement) {
    $nom = $enregistrement['NOM'];
    $prenom = $enregistrement['PRENOM'];
    $adresse1 = $enregistrement['ADRESSE1'];
    $adresse2= $enregistrement['ADRESSE2'];
    $tel1 = $enregistrement['TEL1'];
    $tel2 = $enregistrement['TEL2'];
}

De cette manière on récupère un tableau associatif sous la forme Clé->Valeur pour chacun des enregistrements retournés par la requête. C'est la constante SQLITE_ASSOC qui permet cela. La constante SQLITE_NUM permet de retourner un tableau indexé numériquement.
Il existe d'autres méthodes ...

  • numRows () : retourne le nombre de lignes données par la requête.

Oracle [modifier]