1. Exemple rapide de programme Mysql
# (gH) ; cr_demo.mysql # on utilise ce programme en ligne de commandes sous forge par : # mysql -v -h localhost -u anonymous -p < cr_demo.mysql # ou par # mysql -v --host=localhost --user=anonymous --password=anonymous < cr_demo.mysql # 1. création USE statdata ; DROP TABLE IF EXISTS demo ; CREATE TABLE demo ( num INT AUTO_INCREMENT , nom VARCHAR(50) , age INT , KEY num (num) ) ; # fin de création # 2. ajout INSERT INTO demo (nom,age) VALUES ("durand",30) ; INSERT INTO demo (nom,age) VALUES ("dupuis",20) ; # 3. interrogation DESCRIBE demo ; SELECT COUNT(*) FROM demo ; SELECT * FROM demo ;2. Exemple rapide de programme Php similaire (version < 5.5)
<?php # http://www.info.univ-angers.fr/pub/gh/demo.php # connexion sur forge pour l'utilisateur anonymous, # mot de passe anonymous : $tdc2 = mysql_connect("localhost","anonymous","anonymous") or die("problème de connexion") ; # ouverture de la base de données $tdc3 = mysql_select_db("statdata") ; # création d'une table $crt = "" ; $crt .= " create table demo ( " ; $crt .= " num INT auto_increment , " ; $crt .= " nom VARCHAR(50) , " ; $crt .= " age INT , " ; $crt .= " KEY num (num) " ; $crt .= " ) " ; $sql = mysql_query("$crt") ; # ajout de données $aga = rand(20,80) ; $ajo = " insert into demo (nom,age) values (\"?\",$aga) " ; $sql = mysql_query("$ajo") ; # interrogation # rappel : on exécute la requete avec mysql_query # et on convertit en tableau chaque ligne retournée par la requete # avec mysql_fetch_array $question = " SELECT COUNT(*) FROM statdata.demo " ; $reponse = mysql_query($question) ; $tableau = mysql_fetch_array($reponse) ; $nbe = $tableau["COUNT(*)"] ; echo "<h2> la table demo contient $nbe enregistrements</h2>" ; $cha = "age" ; $req2 = " SELECT $cha , NOM FROM statdata.demo " ; $res2 = mysql_query($req2) ; $rec = 0 ; while ($ligr=mysql_fetch_array($res2)) { $rec++ ; $nom = $ligr["NOM"] ; $age = $ligr[$cha] ; echo " personne numéro $rec nom = $nom age = $age <p>\n"; } ; # fin de tant que ?>3. Exemple moins rapide mais plus sûr et plus propre de programme Php (version < 5.5)
<?php # http://www.info.univ-angers.fr/pub/gh/demo.php # connexion sur forge pour l'utilisateur anonymous, # mot de passe anonymous : $tdc2 = @mysql_connect("forge","anonymous","anonymous") ; if (!$tdc2) { echo "La connection a échoué, le message d'erreur était : " ; echo mysql_error() ; die("Fin de programme, code -1") ; } ; # fin si # pour debug : echo "Connection OK." ; # ouverture de la base de données $tdc3 = @mysql_select_db("statdata") ; if (!$tdc3) { echo "Impossible d'utiliser la base statdata, le message d'erreur est : " ; echo mysql_error() ; die("Fin de programme, code -2") ; } ; # fin si # pour debug : echo "Accession à la base statdata OK." ; # création d'une table $crt = "" ; $crt .= " create table demo ( " ; $crt .= " num INT auto_increment , " ; $crt .= " nom VARCHAR(50) , " ; $crt .= " age INT , " ; $crt .= " KEY num (num) " ; $crt .= " ) " ; $sql = @mysql_query("$crt") ; if (!$sql) { echo "La création de la table demo s'est mal passée, le message d'erreur est : " ; echo mysql_error() ; die("Fin de programme, code -3") ; } ; # fin si # pour debug : echo "Requête create OK." ; # ajout de données $aga = rand(20,80) ; $ajo = " insert into demo (nom,age) values (\"?\",$aga) " ; $sql = @mysql_query("$ajo") ; if (!$sql) { echo "L'insertion dans la table demo s'est mal passée, le message d'erreur est : " ; echo mysql_error() ; die("Fin de programme, code -4") ; } ; # fin si # interrogation # rappel : on exécute la requete avec mysql_query # et on convertit en tableau chaque ligne retournée par la requete # avec mysql_fetch_array $question = " SELECT COUNT(*) FROM statdata.demo " ; $reponse = @mysql_query($question) ; if (!$reponse) { echo "L'interrogation de la table demo a échoué, le message d'erreur est : " ; echo mysql_error() ; die("Fin de programme, code -6") ; } ; # fin si $tableau = mysql_fetch_array($reponse) ; $nbe = $tableau["COUNT(*)"] ; echo "<h2> la table demo contient $nbe enregistrements</h2>" ; $cha = "age" ; $req2 = " SELECT $cha , NOM FROM statdata.demo " ; $res2 = mysql_query($req2) ; $rec = 0 ; while ($ligr=mysql_fetch_array($res2)) { $rec++ ; $nom = $ligr["NOM"] ; $age = $ligr[$cha] ; echo " personne numéro $rec nom = $nom age = $age <p>\n"; } ; # fin de tant que ?>4. Utilisation de Php (version >=5.5)
L'utilisation des fonctions mysql* n'est plus conseillée depuis la version 5.5 de PHP. Voir par exemple la page mysql_connect.
Toutefois il est encore possible de les utiliser. Dans ce cas, pour éviter d'avoir un "warning", il suffit de mettre un symbole arrobase devant le nom de ces fonctions.
Une meilleure solution est de passer par PDO-mysql. Voici par exemple comment réaliser la connection, en testant si tout va bien :
try { $dbh = new PDO("mysql:host=$sqlMachine;dbname=$sqlDatabase", $sqlUser, $sqlPassword); } catch (PDOException $e) { print "Error!: " . $e->getMessage() ; die(); }De la même façon, voici comment effectuer des requêtes. Remarque : on utilise aussi des fonctions en «PHP conceptuel» via std.php.
<?php # création d'une table $crt = "" ; $crt .= " create table demo ( " ; $crt .= " num INT auto_increment , " ; $crt .= " nom VARCHAR(50) , " ; $crt .= " age INT , " ; $crt .= " KEY num (num) " ; $crt .= " ) " ; try { $sth = $dbh->prepare($crt) ; $sth->execute() ; $result = $sth->fetchAll(PDO::FETCH_ASSOC) ; } catch (PDOException $e) { echo $e->getMessage() ; } # fin de try $terr = $sth->errorInfo() ; $err = trim($terr[2]) ; if (strlen($err)!=0) { h2("erreur","grouge") ; pre("cadre") ; print_r($terr) ; finpre() ; } else { p() ; echo " création réussie." ; finp() ; } ; # fin si # ajout de données $aga = rand(20,80) ; $ajo = " insert into demo (nom,age) values (\"?\",$aga) " ; try { $sth = $dbh->prepare($ajo) ; $sth->execute() ; $result = $sth->fetchAll(PDO::FETCH_ASSOC) ; } catch (PDOException $e) { echo $e->getMessage() ; } # fin de try $terr = $sth->errorInfo() ; $err = trim($terr[2]) ; if (strlen($err)!=0) { h2("erreur","grouge") ; pre("cadre") ; print_r($terr) ; finpre() ; } else { p() ; echo " ajout réussi." ; finp() ; } ; # fin si # interrogations $question = " SELECT COUNT(*) FROM test.demo " ; try { $sth = $dbh->prepare($question) ; $sth->execute() ; $result = $sth->fetchAll(PDO::FETCH_ASSOC) ; } catch (PDOException $e) { echo $e->getMessage() ; } # fin de try $terr = $sth->errorInfo() ; $err = trim($terr[2]) ; if (strlen($err)!=0) { h2("erreur","grouge") ; pre("cadre") ; print_r($terr) ; finpre() ; } else { pre() ; print_r($result) ; finpre() ; } ; # fin si ## ------------------------------------------------------- $cha = "age" ; $req2 = " SELECT $cha , NOM FROM test.demo " ; try { $sth = $dbh->prepare($req2) ; $sth->execute() ; $result = $sth->fetchAll(PDO::FETCH_ASSOC) ; } catch (PDOException $e) { echo $e->getMessage() ; } # fin de try $terr = $sth->errorInfo() ; $err = trim($terr[2]) ; if (strlen($err)!=0) { h2("erreur","grouge") ; pre("cadre") ; print_r($terr) ; finpre() ; } else { pre() ; print_r($result) ; finpre() ; } ; # fin si ?>
Retour à la page principale de (gH)