home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 August / PCWorld_2001-08_cd.bin / Komunikace / phptriad / phptriadsetup2-11.exe / php / pear / DB / sybase.php < prev    next >
PHP Script  |  2001-02-19  |  4KB  |  169 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: sybase.php,v 1.15 2001/02/19 12:22:26 ssb Exp $
  20. //
  21. // Database independent query interface definition for PHP's Sybase
  22. // extension.
  23. //
  24.  
  25. require_once 'DB/common.php';
  26.  
  27. class DB_sybase extends DB_common
  28. {
  29.     // {{{ properties
  30.  
  31.     var $connection;
  32.     var $phptype, $dbsyntax;
  33.     var $prepare_tokens = array();
  34.     var $prepare_types = array();
  35.  
  36.     // }}}
  37.     // {{{ constructor
  38.  
  39.     function DB_sybase()
  40.     {
  41.         $this->DB_common();
  42.         $this->phptype = 'sybase';
  43.         $this->dbsyntax = 'sybase';
  44.         $this->features = array(
  45.             'prepare' => false,
  46.             'pconnect' => true,
  47.             'transactions' => false
  48.         );
  49.     }
  50.  
  51.     // }}}
  52.     // {{{ connect()
  53.  
  54.     function connect($dsn, $persistent = false)
  55.     {
  56.         if (is_array($dsn)) {
  57.             $dsninfo = &$dsn;
  58.         } else {
  59.             $dsninfo = DB::parseDSN($dsn);
  60.         }
  61.         if (!$dsninfo || !$dsninfo['phptype']) {
  62.             return $this->raiseError(); 
  63.         }
  64.         $this->dsn = $dsninfo;
  65.         $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost';
  66.         $connect_function = $persistent ? 'sybase_pconnect' : 'sybase_connect';
  67.         $conn = $dbhost ? $connect_function($dbhost) : false;
  68.         $dsninfo['database'] && @sybase_select_db($dsninfo['database'], $conn);
  69.         $this->connection = $conn;
  70.         return DB_OK;
  71.     }
  72.  
  73.     // }}}
  74.     // {{{ disconnect()
  75.  
  76.     function disconnect()
  77.     {
  78.         return @sybase_close($this->connection);
  79.     }
  80.  
  81.     // }}}
  82.     // {{{ simpleQuery()
  83.  
  84.     function simpleQuery($query)
  85.     {
  86.     $this->last_query = $query;
  87.         $query = $this->modifyQuery($query);
  88.     $result = @sybase_query($query, $this->connection);
  89.     if (!$result) {
  90.         return $this->raiseError();
  91.     }
  92.     // Determine which queries that should return data, and which
  93.     // should return an error code only.
  94.     return DB::isManip($query) ? DB_OK : $result;
  95.     }
  96.     
  97.     // }}}
  98.     // {{{ fetchRow()
  99.     function &fetchRow($result, $fetchmode = DB_FETCHMODE_DEFAULT)
  100.     {
  101.     if ($fetchmode == DB_FETCHMODE_DEFAULT) {
  102.         $fetchmode = $this->fetchmode;
  103.     }
  104.     $row = ($fetchmode & DB_FETCHMODE_ASSOC) ? @sybase_fetch_array($result) : @sybase_fetch_row($result);
  105.     if (!$row) {
  106.         if ($errmsg = sybase_get_last_message()) {
  107.         return $this->raiseError($errmsg);
  108.         } else {
  109.         return null;
  110.         }
  111.     }
  112.     
  113.     return $row;
  114.     }
  115.     
  116.     // }}}
  117.     // {{{ fetchInto()
  118.  
  119.     function fetchInto($result, &$ar, $fetchmode=DB_FETCHMODE_DEFAULT)
  120.     {
  121.         if ($fetchmode == DB_FETCHMODE_DEFAULT) {
  122.             $fetchmode = $this->fetchmode;
  123.         }
  124.         $ar = ($fetchmode & DB_FETCHMODE_ASSOC) ? @sybase_fetch_array($result) : @sybase_fetch_row($result);
  125.         if (!$ar) {
  126.             return $this->raiseError();
  127.         }
  128.         return DB_OK;
  129.     }
  130.  
  131.     // }}}
  132.     // {{{ freeResult()
  133.  
  134.     function freeResult($result)
  135.     {
  136.         if (is_resource($result)) {
  137.             return @sybase_free_result($result);
  138.         }
  139.         if (!isset($this->prepare_tokens[$result])) {
  140.             return false;
  141.         }
  142.         unset($this->prepare_tokens[$result]);
  143.         unset($this->prepare_types[$result]);
  144.         return true; 
  145.     }
  146.  
  147.     // }}}
  148.     // {{{ numCols()
  149.  
  150.     function numCols($result)
  151.     {
  152.         $cols = @sybase_num_fields($result);
  153.         if (!$cols) {
  154.             return $this->raiseError();
  155.         }
  156.         return $cols;
  157.     }
  158.  
  159.     // }}}
  160. }
  161.  
  162. /*
  163.  * Local variables:
  164.  * tab-width: 4
  165.  * c-basic-offset: 4
  166.  * End:
  167.  */
  168. ?>
  169.