Exemples rapides MySql et Php

 

 

 

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 gH    Retour à la page principale de   (gH)