Exemples rapides MySql et Php

 

 

1. Exemple rapide de programme Mysql


 # (gH) ; cr_demo.mysql

 # on utilise ce programme sous forge (localhost) 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 test ; # ne marche pas avec USE stadata ; pour des raisons de droits d'accès

 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 (localhost) pour l'utilisateur pomme,
 # mot de passe poire :
 $tdc2 = mysql_connect("localhost","pomme","poire")
          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 pomme,
 # mot de passe poire :
 $tdc2 = @mysql_connect("localhost","pomme","poire") ;
 if (!$tdc2) {
   echo "La connection a échoué, le message d'erreur était : " ;
   echo mysql_error() ;
   die("Fin de programme, code -1") ;
 } ; # fin si

 # ouverture de la base de données
 $tdc3 = @mysql_select_db("statdata") ;
 if (!$tdc3) {
   echo "Impossible d'utiliser la table statdata, le message d'erreur est : " ;
   echo mysql_error() ;
   die("Fin de programme, code -2") ;
 } ; # fin si

 # 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


 # 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
 mysql_close($tdc2) ;

?>

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)