Vous êtes sur la page 1sur 11

PHP et les BD MySQL

1- Présentation de MySQL :
– MySQL est l'un des systèmes de gestion de bases de données relationnelles
(SGBDR) les plus utilisés au monde autant par le grand public (applications
web principalement) que par des professionnels.

– C'est un logiciel libre développé sous double licence en fonction de


l'utilisation : dans un produit libre ou dans un produit propriétaire.

– MySQL fonctionne sur de nombreux systèmes d'exploitation différents:


Solaris, linux, Windows, Mac…

– A été acheté le 16 janvier 2008 par Sun Microsystems et il est devenu


officiellement la base de données à utiliser conjointement avec le langage
de programmation Java.

– En 2009, Oracle a acheté Sun, mettant entre les mains d'une même société
les deux produits concurrents que sont Oracle Database et MySQL.

– La première version de MySQL est apparue le 23 mai 1995. Son créateur est
Michael Widenius.

– Dernière version : MySQL 5.7 (Octobre 2015).

– Depuis mai 2009, son créateur Michael Widenius a créé MariaDB pour
continuer son développement en tant que projet Open Source.

Administration d'une BD MySQL :

phpMyAdmin est un outil entièrement écrit en PHP qui fournit une interface
simple et complète pour administrer une base MySQL.

Les principaux types de données :

Type Borne inférieure Borne supérieure

TINYINT -128 127

Page 1
SMALLINT -32768 32767

MEDIUMINT -8388608 8388607

INT ou INTEGER -2147483648 2147483647

BIGINT -9223372036854775808 9223372036854775807

FLOAT -3.402823466E+38 3.402823466E+38

DOUBLE ou REAL -1.797693134862E+308 1.797693134862E+308

NUMERIC (M,D) ou Réel de D chiffres après la virgule et de M chiffres au


DECIMAL(M,D) maximum

Description

CHAR(M), Chaîne de M caractères, où 1<M<255,


VARCHAR(M)
LONGTEXT Longueur maximale de 4294967295 caractères.

TEXT Longueur maximale de 65535 caractères

DATETIME Date et heure au format AAAA-MM-JJ HH:MM:SS.

TIME Heure au format HH:MM:SS.

BLOB Permet de stocker des fichiers dans la base de données

2- Comment communiquer avec une BD MySQL en PHP?


Choix de l'extension:

 Depuis la version 5, PHP propose deux extensions pour accéder à une base
de données sous MySQL:

Page 2
– Mysql (préfixe mysql_)

– Mysqli (préfixe mysqli_)

L'extension mysql est l'ancienne extension, présente dans les versions


antérieurs de PHP (non recommandé à partir de la version 5 de PHP).

L'extension mysqli, version améliorée qui supporte les nouvelles


fonctionnalités de MySQL, peut être utilisée avec l’approche orientée objet ou
bien procédurale.

L’accès à une base MySQL et son utilisation (pour les différentes types de
manipulations), suit les étapes ci-dessous :

1. Connexion au serveur MySQL.

2. Envoi de diverses requêtes au serveur (insertion, lecture, suppression ou


mise à jour des données).

3. Récupération du résultat d’une requête.

4. Fermeture de la connexion au serveur.

Avant toute chose, le script doit permettre de se connecter au serveur MySQL.


La fonction essentielle de ce script est mysqli_connect(),

Connexion à la BD :

mysqli_connect($serveur,$user,$password)

– $serveur: est une chaîne contenant le nom du serveur. Ce dernier est défini
par l’hébergeur du site. En local, il s’agit de la chaîne "localhost",

– $user: est le nom sous lequel l’utilisateur est autorisé à accéder au serveur.
La valeur par défaut est "root".

– $password: est le mot de passe associé à l’utilisateur. Par défaut c'est une
chaîne vide "".

– mysqli_connect retourne un identifiant de connexion utilisé par la suite


pour effectuer les opérations sur la base.

– Si la connexion n’est pas établie, la fonction retourne FALSE.

Page 3
Exemple:
$idcon = mysqli_connect("localhost" ,"root", "");
if($idcon == FALSE)
{
//Echec de connexion
}
else
{
// Succès de connexion
/* code du script … */
}
ou bien :

if($idcon)
{
// Succès de connexion
/* code du script … */
}
else
{
//Echec de connexion
}
Déconnexion:

Pour mettre fin à la connexion, on utilise la fonction mysql_close():

boolean mysqli_close([$idcon])

– $idcon est l’identifiant de connexion récupéré lors de la connexion.

– La fonction retourne TRUE en cas de succès et FALSE en cas d’erreurs.


$idcon = mysqli_connect("localhost" ,"root", " ");
if ($idcon)
{ // Succès de connexion
/* code du script … */
$ok=mysqli_close($idcon);
if($ok)
echo 'Déconnexion réussie <br>' ;
else
echo 'Echec de la déconnexion <br>' ;
}
Obtenir des informations en cas d'erreurs de connexion à l’aide des deux
fonctions:

 mysqli_connect_errno(): retourne un numéro d’erreur (0 si aucune


erreur).

Page 4
 mysqli_connect_error(): retourne le message de l’erreur (chaine vide si
aucune erreur).
$idcon = mysqli_connect("localhost" ,"root", " ");
if($idcon)
{ // Succès de connexion
/* code du script … */
}
else
{
echo "Erreur:".mysqli_connect_errno(). " : ".mysqli_connect_error();
}

Sélection de la BD:

Si le serveur comporte plusieurs bases de données, le script précise la base


désirée au moyen de la fonction mysqli_select_db():

mysqli_select_db($idcon, $nom_base )

Cette fonction retourne TRUE si la base existe et FALSE dans le cas contraire.
$idcon = mysqli_connect("localhost" ,"root", "");
if($idcon)
{ if(mysqli_select_db($idcon ,"MaBase") ) {
echo "Succès de connexion.";
/* code du script … */
} else {
echo("Echec de connexion à la base.");
}
Envoi des requêtes SQL à la BD:

Pour envoyer une requête, on utilise la fonction mysqli_query(), dont la


syntaxe est la suivante :

mysqli_query(resource $idcon, string $requete)

– La chaîne $requete: contient le code de la requête SQL.

– $idcon: est l’identifiant de connexion,

– La fonction retourne un identifiant de résultat de type ressource, en cas


d’échec d’exécution de la requête mysqli_query() retourne FALSE.

Exemple :
Page 5
<?php
$idcon = mysqli_connect("localhost" ,"root", "");
$requete="SELECT * FROM Etudiant";
$result=mysqli_query($idcon, $requete);
if($result==FALSE)
{
echo "Lecture impossible";
}
else
{
//Lecture des résultats de la requête
}
?>
Insertion de données :

nouveau_livre.php:

<form action="insertion_action.php" method="post" …..

insertion_action.php:
<?php
$idcon=mysqli_connect("localhost","root","");
$okbd=mysqli_select_db($idcon,"biblio");
$code=$_POST['code'];
$titre=$_POST['titre'];
$auteur=$_POST['auteur'];
$dateedition=$_POST['dateedition'];
$requet="insert into livre
values('$code','$titre','$auteur','$dateedition')";
$ok=mysqli_query($idcon, $requet);
if($ok==FALSE)

Page 6
echo "Problème d'insertion";
mysqli_close($idcon); ?>
Suppression de données:

suppression_livre.php:

<form action="suppression_action.php" method="post" …..

suppression_action.php:
<?php
$idcon=mysqli_connect("localhost","root","");
$okbd=mysqli_select_db($idcon,"biblio");
$CodeLivre=$_POST['CodeLivre'];
$requet="delete from livre where CodeLivre = $CodeLivre";
$ok=mysqli_query($idcon,$requet);
if($ok==FALSE)
echo "Problème de suppression";
mysql_close($idcon);
?>
Modification de données :

modification_livre.php:

<form action="modification_action.php" method="post" …..

modification_action.php:
<?php
$idcon=mysqli_connect("localhost","root","");
$okbd=mysqli_select_db($idcon,"biblio");
$code=$_POST['code'];
$titre=$_POST['titre'];
$auteur=$_POST['auteur'];

Page 7
$dateedition=$_POST['dateedition'];
$requet="update livre set Titre ='$titre' ,Auteur='$auteur',
dateEdition= '$dateedition' where codeLivre='$code'";
$ok=mysqli_query($idcon,$requet);
if($ok==FALSE)
echo "Problème de modification";
mysql_close($idcon);
?>
Lecture du résultat d’une requête:

Il s’agit de lire le résultat d’une requête contenant la commande SELECT,

Nombre de lignes retournés par la requête:

int mysqli_num_rows(resource $idresult)

permet de déterminer le nombre de lignes (utilisable uniquement avec requête


SELECT).

Exemple:
$requete="select * from Livre";
$res=mysqli_query($idcon, $requet);
$nbr=mysqli_num_rows($res);
echo "Le nombre de livre est $nbr <br>";
Lecture à l’aide d’un tableau:

La fonction qui permet de lire les données dans un tableau est


mysql_fetch_array(). Sa syntaxe:

array mysqli_fetch_array(resource $result)

 $result: celui retourné par la fonction mysqli_query(),

 Cette fonction retourne un tableau associatif contenant le même


nombre de colonnes précisées dans SELECT.

 Chaque nouvel appel de la fonction mysqli_fetch_array() retourne la


ligne suivante du résultat identifié par $result, ou FALSE s’il n’y a plus de
ligne à lire.

 Il faut effectuer une boucle pour lire chacune des lignes

Exemple :

Page 8
<html >
<head> <title>Selection des livre</title></head>
<body>
<?php
$idcon=mysqli_connect("localhost","root","");
$okbd=mysqli_select_db("bibliotheque");
$requet="select * from livre";
$res=mysqli_query($idcon, $requet);
?>
<table >
<tr>
<td>Code</td>
<td>Titre</td>
<td>Auteur</td>
<td>Date Edition</td>
</tr>
<?php
while($ligne=mysqli_fetch_array($res))
{
?>
<tr>
<td><?php echo $ligne['codeLivre']; ?></td>
<td><?php echo $ligne['Titre']; ?></td>
<td><?php echo $ligne['Auteur']; ?></td>
<td><?php echo $ligne['DateEdition']; ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
ou bien :
<?php
$res=mysqli_query($idcon, $requet);
while($ligne=mysqli_fetch_array($res))
{
?>
<tr>
<td><?php echo $ligne[0]; ?></td>
<td><?php echo $ligne[1]; ?></td>
<td><?php echo $ligne[2]; ?></td>
<td><?php echo $ligne[3]; ?></td>
</tr>
<?php
}
?>

Page 9
</table>
</body>
</html>
Autres fonctions de lecture:

La fonction suivante permet de récupérer une ligne de résultat à la fois dans un


tableau associatif:

array mysqli_fetch_assoc(resource $result)

retourne un tableau uniquement associatif dont les clés sont les noms des
colonnes de la table interrogée.

Cette fonction doit être utiliser à la place de mysqli_fetch_array().


<?php
while($ligne=mysqli_fetch_assoc($res))
{
?>
<tr>
<td><?php echo $ligne['codeLivre']; ?></td>
<td><?php echo $ligne['Titre']; ?></td>
<td><?php echo $ligne['Auteur']; ?></td>
<td><?php echo $ligne['DateEdition']; ?></td>
</tr>
<?php
}
?>
La fonction suivante permet de récupérer une ligne de résultat à la fois dans un
tableau :

array mysqli_fetch_row(resource $result)

qui retourne un tableau uniquement indicé dont les indices sont les numéros
des colonnes dans la table interrogée.

Cette fonction doit être utiliser à la place de mysqli_fetch_array().


<?php
$res=mysqli_query($idcon, $requet);
while($ligne=mysqli_fetch_row($res))
{
?>
<tr>
<td><?php echo $ligne[0]; ?></td>
<td><?php echo $ligne[1]; ?></td>

Page 10
<td><?php echo $ligne[2]; ?></td>
<td><?php echo $ligne[3]; ?></td>
</tr>
<?php
}
?>
Récupération des valeurs dans un objet :

object mysqli_fetch_object(resource $res)

Permet de récupérer la valeur de chaque colonne d’un résultat sous la forme


d’une propriété d’objet.
<?php
while($ligne=mysqli_fetch_object($res))
{?>
<tr>
<td><?php echo $ligne->CodeLivre; ?></td>
<td><?php echo $ligne->Titre; ?></td>
<td><?php echo $ligne->Auteur; ?></td>
<td><?php echo $ligne->DateEdition; ?></td>
</tr>
<?php
}?>

Page 11

Vous aimerez peut-être aussi