home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 August / PCWorld_2001-08_cd.bin / Komunikace / phptriad / phptriadsetup2-11.exe / php / pear / DB / msql.php < prev    next >
PHP Script  |  2001-02-19  |  5KB  |  165 lines

  1. <?php
  2. //
  3. // +----------------------------------------------------------------------+
  4. // | PHP version 4.0                                                      |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2001 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.02 of the PHP license,      |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Sterling Hughes <sterling@php.net>                          |
  17. // +----------------------------------------------------------------------+
  18. //
  19. // $Id: msql.php,v 1.16 2001/02/19 12:22:26 ssb Exp $
  20. //
  21. // Database independent query interface definition for PHP's Mini-SQL
  22. // extension.
  23. //
  24.  
  25. require_once 'DB/common.php';
  26.  
  27. class DB_msql extends DB_common
  28. {
  29.     var $connection;
  30.     var $phptype, $dbsyntax;
  31.     var $prepare_tokens = array();
  32.     var $prepare_types = array();
  33.  
  34.     function DB_msql()
  35.     {
  36.         $this->DB_common();
  37.         $this->phptype = 'msql';
  38.         $this->dbsyntax = 'msql';
  39.         $this->features = array(
  40.             'prepare' => false,
  41.             'pconnect' => true,
  42.             'transactions' => false
  43.         );
  44.     }
  45.  
  46.     function connect($dsn, $persistent = false)
  47.     {
  48.         if(is_array($dsn)) {
  49.             $dsninfo = &$dsn;
  50.         } else {
  51.             $dsninfo = DB::parseDSN($dsn);
  52.         }
  53.         if (!$dsninfo || !$dsninfo['phptype']) {
  54.             return $this->raiseError(); 
  55.         }
  56.         $this->dsn = $dsninfo;
  57.         $user = $dsninfo['username'];
  58.         $pw = $dsninfo['password'];
  59.         $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost';
  60.         $connect_function = $persistent ? 'msql_pconnect' : 'msql_connect';
  61.         if ($dbhost && $user && $pw) {
  62.             $conn = $connect_function($dbhost, $user, $pw);
  63.         } elseif ($dbhost && $user) {
  64.             $conn = $connect_function($dbhost,$user);
  65.         } else {
  66.             $conn = $connect_function($dbhost);
  67.         }
  68.         if ($dsninfo['database']) {
  69.             @msql_select_db($dsninfo['database'], $conn);
  70.         } else {
  71.             return $this->raiseError();
  72.         }
  73.         $this->connection = $conn;
  74.         return DB_OK;
  75.     }
  76.  
  77.     function disconnect()
  78.     {
  79.         return @msql_close($this->connection);
  80.     }
  81.  
  82.     function simpleQuery($query)
  83.     {
  84.     $this->last_query = $query;
  85.         $query = $this->modifyQuery($query);
  86.         $result = @msql_query($query, $this->connection);
  87.         if (!$result) {
  88.             return $this->raiseError();
  89.         }
  90.         // Determine which queries that should return data, and which
  91.         // should return an error code only.
  92.         return DB::isManip($query) ? DB_OK : $result;
  93.     }
  94.  
  95.     function &fetchRow($result, $fetchmode=DB_FETCHMODE_DEFAULT)
  96.     {
  97.     if ($fetchmode == DB_FETCHMODE_DEFAULT) {
  98.         $fetchmode = $this->fetchmode;
  99.     }
  100.         if ($fetchmode & DB_FETCHMODE_ASSOC) {
  101.             $row = @msql_fetch_array($result, MSQL_ASSOC);
  102.         } else {
  103.             $row = @msql_fetch_row($result);
  104.         }
  105.         if (!$row) {
  106.         if ($error = msql_error()) {
  107.         return $this->raiseError($error);
  108.         } else {
  109.         return null;
  110.         }
  111.         }
  112.     
  113.         return $row;
  114.     }
  115.  
  116.     function fetchInto($result, &$ar, $fetchmode=DB_FETCHMODE_DEFAULT)
  117.     {
  118.     if ($fetchmode == DB_FETCHMODE_DEFAULT) {
  119.         $fetchmode = $this->fetchmode;
  120.     }
  121.         if ($fetchmode & DB_FETCHMODE_ASSOC) {
  122.             $ar = @msql_fetch_array($result, MSQL_ASSOC);
  123.         } else {
  124.             $ar = @msql_fetch_row($result);
  125.         }
  126.         if (!$ar) {
  127.             return $this->raiseError();
  128.         }
  129.         return DB_OK;
  130.     }
  131.  
  132.     function freeResult($result)
  133.     {
  134.         if (is_resource($result)) {
  135.             return @msql_free_result($result);
  136.         }
  137.         if (!isset($this->prepare_tokens[$result])) {
  138.             return false;
  139.         }
  140.         unset($this->prepare_tokens[$result]);
  141.         unset($this->prepare_types[$result]);
  142.         return true; 
  143.     }
  144.  
  145.     function numCols($result)
  146.     {
  147.         $cols = @msql_num_fields($result);
  148.         if (!$cols) {
  149.             return $this->raiseError();
  150.         }
  151.         return $cols;
  152.     }
  153.  
  154.     function numRows($result)
  155.     {
  156.         $rows = @msql_num_rows($result);
  157.         if (!$rows) {
  158.             return $this->raiseError();
  159.         }
  160.         return $rows;
  161.     }
  162. }
  163.  
  164. ?>
  165.