Source for file mysql.dbtools.php

Documentation is available at mysql.dbtools.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db_driver
  5. @author     Croes Gérald, Laurent Jouanneau
  6. @contributor Laurent Jouanneau
  7. @copyright  2001-2005 CopixTeam, 2005-2009 Laurent Jouanneau
  8. *  This class was get originally from the Copix project (CopixDbToolsMysql, Copix 2.3dev20050901, http://www.copix.org)
  9. *  Some lines of code are copyrighted 2001-2005 CopixTeam (LGPL licence).
  10. *  Initial authors of this Copix class are Gerald Croes and Laurent Jouanneau,
  11. *  and this class was adapted/improved for Jelix by Laurent Jouanneau
  12. *
  13. @link      http://www.jelix.org
  14. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  15. */
  16.  
  17. /**
  18.  * classe d'outils pour gérer une base de données
  19.  * @package    jelix
  20.  * @subpackage db_driver
  21.  */
  22. class mysqlDbTools extends jDbTools {
  23.  
  24.     protected $dbmsStyle = array('/^\s*(#|\-\- )/''/;\s*$/');
  25.  
  26.     /**
  27.     * retourne la liste des tables
  28.     * @return   array    $tab[] = $nomDeTable
  29.     */
  30.     function _getTableList (){
  31.         $results array ();
  32.         if (isset($this->_connector->profile['database'])) {
  33.             $db $this->_connector->profile['database'];
  34.         }
  35.         else if (isset($this->_connector->profile['dsn'])
  36.                  && preg_match('/dbname=([a-z0-9_ ]*)/'$this->_connector->profile['dsn']$m)){
  37.             $db $m[1];  
  38.         }
  39.         else {
  40.             throw new jException("jelix~error.no.database.name"$this->_connector->profile['name']);
  41.         }
  42.         $rs $this->_connector->query ('SHOW TABLES FROM `'.$db.'`');
  43.         $col_name 'Tables_in_'.$db;
  44.  
  45.         while ($line $rs->fetch ()){
  46.             $results[$line->$col_name;
  47.         }
  48.  
  49.         return $results;
  50.     }
  51.  
  52.     /**
  53.     * récupère la liste des champs pour une base donnée.
  54.     * @return   array    $tab[NomDuChamp] = obj avec prop (tye, length, lengthVar, notnull)
  55.     */
  56.     function _getFieldList ($tableName){
  57.         $results array ();
  58.  
  59.         $rs $this->_connector->query ('SHOW FIELDS FROM `'$tableName.'`');
  60.  
  61.         while ($line $rs->fetch ()){
  62.             $field new jDbFieldProperties();
  63.  
  64.             if (preg_match('/^(\w+)\s*(\((\d+)\))?.*$/',$line->Type,$m)) {
  65.                 $field->type strtolower($m[1]);
  66.                 if ($field->type == 'varchar' && isset($m[3])) {
  67.                     $field->length intval($m[3]);
  68.                 }
  69.             else {
  70.                 $field->type $line->Type;
  71.             }
  72.  
  73.             $field->name $line->Field;
  74.             $field->notNull ($line->Null == 'NO');
  75.             $field->primary ($line->Key == 'PRI');
  76.             $field->autoIncrement  ($line->Extra == 'auto_increment');
  77.             $field->hasDefault ($line->Default != '' || !($line->Default == null && $field->notNull));
  78.             // to fix a bug in php 5.2.5 or mysql 5.0.51
  79.             if($field->notNull && $line->Default === null && !$field->autoIncrement)
  80.                 $field->default ='';
  81.             else
  82.                 $field->default $line->Default;
  83.             $results[$line->Field$field;
  84.         }
  85.         return $results;
  86.     }
  87. }
  88. ?>

Documentation generated on Wed, 07 Sep 2011 13:48:23 +0200 by phpDocumentor 1.4.3