Qu'est-ce que Mysql?
Annie Danzart
Annie.Danzart@enst.fr
http://www.infres.enst.fr/~danzart/mysql/
Qu’est-ce que Mysql ?
• Aperçu
• Langage
• Le serveur
• La base de données
• Interfaces d’accès
• Fonctions php d’accès et de manipulation
• Exploitation de l’envoi d’une requête
Qu’est-ce que Mysql ?
• Système de Gestion de Bases de Données relationnelles
• Libre de droits (license GPL)
http://www.mysql.com/
• Langage de manipulation de bases de données
• Serveur mysqld, commande mysql
• Base de données mysql en tant que telle
(bases, utilisateurs)
• Fonctions d'accès intégrées dans de nombreux langages
Mysql : le langage
SQL-like avec quelques restrictions
requêtes
mysql > create database essai; mysql > show databases;
mysql > drop database essai; mysql > use essai;
mysql > drop table if exists table1; mysql > create table table1 (
ID int default '0' not null auto_increment; nom text;
numero int;
primary key (ID) );
mysql > show columns from table1;
mysql > insert into table1 (nom, numero) values ("toto","123451"); mysql > select * from table1;
mysql > delete from table1 where numero=" 123451";
Mysql : le serveur
Interface de base fournie avec l'environnement
exemple
> mysql -h mysql.tp.enst.fr -u user -p -h : hôte ( adresse IP )
-u : utilisateur ( accès spécifique )
-p : mot de passe ( défini au moment de la création
sera fourni après validation de la commande ) Après validation de la commande, une session est ouverte qui permet de
frapper directement des commandes mysql
Mysql : la base de données
user : table des utilisateurs référencés
db
: table des bases existantes
host
: table des droits d'accès par hôte
user
host/user/passworddroits utilisateur / administrateur dans mysql
db
host/db/user/select/insert/update/delete/alter/drop/create droits d'accès des utilisateurs pour chaque base
host
host/db/select/insert/update/delete/alter/drop/create
Mysql : interfaces d’accès
administration
utilisateur référencé et averti
public
commande mysql : requêtes sql
phpMyAdmin :
(http://www.infres.enst.fr/packages/phpMyAdminTp/)
outil d'administration de mysql plus convivial
pas de contrôle de cohérence des données
interfaces personnalisées :
adaptées à un besoin particulier
8
mysqld
bases
Serveur Mysql
mysql.infres.enst.fr
Serveur de fichiers
infres.enst.fr
~danzart/public_html/exemple2.php
Poste client
Comment ça marche ?
http://www.infres.enst.fr/~danzart/exemple2.php
firefox
Serveur Apache
www.infres.enst.fr
httpd
mod_php5
2
3
4 7
5
6
1
8
Fonctions php d’accès à Mysql
Exemples
: $connexion = mysql_connect("mysql.tp.enst.fr","user","motdepasse") mysql_close($connexion); mysql_create_db("nom",$connexion); $mysql_result=mysql_list_dbs($connexion); mysql_drop_db("test"); mysql_select_db("CD_test",$connexion); $requete="create table ..."; mysql_query($requete); $mysql_result=mysql_list_fields("base","table",$connexion);Le login et le mot de passe sont exprimés "en clair" dans le script :
-> les stocker dans un fichier difficile d'accès à inclure dans les pages "connexion_inc.php"
Exploitation du résultat d’une requête
<?php
// lecture des parametres de connexion a la base de donnees
include("connexion_inc.php");
// ouverture de la connexion : mysql_connect() ou mysql_pconnect()
$connexion = @mysql_connect($hote,$utilisateur,$password)
or die("Pb de connexion");
// choix de la base de données
mysql_select_db($base);
// prendre la liste des champs de la table produits de la base magasin_test
$query = "SELECT * FROM produits ORDER BY P_ID DESC;";
$mysql_result = @mysql_query($query) ;
echo $query; // afficher le texte de la requête en phase de mise au point
if ($mysql_result == FALSE) {echo "Connexion impossible"; exit;}
// prendre chaque rangée
while ($ligne = mysql_fetch_array($mysql_result))
{ // afficher le nom du produit
// mettre en forme les résultats dans une liste, un tableau html, …
print($ligne["P_nom"]); }
?>
Fonctions php d’accès à Mysql
int mysql_query($requete [,$connexion]),
int mysql_db_query($db,$requete [,$connexion]):
// pour envoyer une requête
int mysql_num_fields():
// pour voir le nombre de champs retournés (mysql_fetch_row())
int mysql_num_rows():
// pour voir s'il y a des résultats
int mysql_insert_id()():
// numéro du dernier enregistrement inséré
string mysql_error(), int mysql_errno();
// pour contrôler les erreurs si une requête n'a pas donné de résultat
array mysql_fetch_array(), array mysql_fetch_row(), array mysql_fetch_object() :
Construire un formulaire dynamique
<form action="resultat.php"> <?php
// ouverture de la connexion+choix de la base de données …..
include("connexion_inc.php");
// prendre la liste des enregistrements
// de la table produits de la base magasin_test
$query = "SELECT * FROM produits ORDER BY P_ID DESC;";
$mysql_result = mysql_query($query) ;
//prendre chaque rangée
while ($ligne = mysql_fetch_array($mysql_result)) {
// afficher une checkbox pour chaque produit de la base
?>
<input type="checkbox" name="choix[]"
value="<?php echo $ligne["P_ID"]; ?>"> <?php echo $ligne["P_nom"]."<p>"; } ?> <input type="submit" name="Valider">
</form>