DB
[ class tree: DB ] [ index: DB ] [ all elements ]

Source for file dbase.php

Documentation is available at dbase.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */
  3. // +----------------------------------------------------------------------+
  4. // | PHP Version 4                                                        |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2004 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. // | Author: Tomas V.V.Cox <cox@idecnet.com>                              |
  17. // | Maintainer: Daniel Convissor <danielc@php.net>                       |
  18. // +----------------------------------------------------------------------+
  19. //
  20. // $Id: dbase.php,v 1.21 2004/08/03 01:46:17 danielc Exp $
  21.  
  22.  
  23. // XXX legend:
  24. //  You have to compile your PHP with the --enable-dbase option
  25.  
  26.  
  27. require_once 'DB/common.php';
  28.  
  29. /**
  30.  * Database independent query interface definition for PHP's dbase
  31.  * extension.
  32.  *
  33.  * @package  DB
  34.  * @version  $Id: dbase.php,v 1.21 2004/08/03 01:46:17 danielc Exp $
  35.  * @category Database
  36.  * @author   Stig Bakken <ssb@php.net>
  37.  */
  38. class DB_dbase extends DB_common
  39. {
  40.     // {{{ properties
  41.  
  42.     var $connection;
  43.     var $phptype$dbsyntax;
  44.     var $prepare_tokens = array();
  45.     var $prepare_types = array();
  46.     var $res_row = array();
  47.     var $result = 0;
  48.  
  49.     // }}}
  50.     // {{{ constructor
  51.  
  52.     /**
  53.      * DB_mysql constructor.
  54.      *
  55.      * @access public
  56.      */
  57.     function DB_dbase()
  58.     {
  59.         $this->DB_common();
  60.         $this->phptype = 'dbase';
  61.         $this->dbsyntax = 'dbase';
  62.         $this->features = array(
  63.             'prepare'       => false,
  64.             'pconnect'      => false,
  65.             'transactions'  => false,
  66.             'limit'         => false
  67.         );
  68.         $this->errorcode_map = array();
  69.     }
  70.  
  71.     // }}}
  72.     // {{{ connect()
  73.  
  74.     function connect($dsninfo$persistent = false)
  75.     {
  76.         if (!DB::assertExtension('dbase')) {
  77.             return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
  78.         }
  79.         $this->dsn $dsninfo;
  80.  
  81.         $ini ini_get('track_errors');
  82.         if ($ini{
  83.             $conn  @dbase_open($dsninfo['database']0);
  84.         else {
  85.             ini_set('track_errors'1);
  86.             $conn  @dbase_open($dsninfo['database']0);
  87.             ini_set('track_errors'$ini);
  88.         }
  89.         if (!$conn{
  90.             return $this->raiseError(DB_ERROR_CONNECT_FAILEDnull,
  91.                                      nullnullstrip_tags($php_errormsg));
  92.         }
  93.         $this->connection = $conn;
  94.         return DB_OK;
  95.     }
  96.  
  97.     // }}}
  98.     // {{{ disconnect()
  99.  
  100.     function disconnect()
  101.     {
  102.         $ret @dbase_close($this->connection);
  103.         $this->connection = null;
  104.         return $ret;
  105.     }
  106.  
  107.     // }}}
  108.     // {{{ &query()
  109.  
  110.     function &query($query = null)
  111.     {
  112.         // emulate result resources
  113.         $this->res_row[(int)$this->result= 0;
  114.         $tmp =new DB_result($this$this->result++);
  115.         return $tmp;
  116.     }
  117.  
  118.     // }}}
  119.     // {{{ fetchInto()
  120.  
  121.     /**
  122.      * Fetch a row and insert the data into an existing array.
  123.      *
  124.      * Formating of the array and the data therein are configurable.
  125.      * See DB_result::fetchInto() for more information.
  126.      *
  127.      * @param resource $result    query result identifier
  128.      * @param array    $arr       (reference) array where data from the row
  129.      *                             should be placed
  130.      * @param int      $fetchmode how the resulting array should be indexed
  131.      * @param int      $rownum    the row number to fetch
  132.      *
  133.      * @return mixed DB_OK on success, null when end of result set is
  134.      *                reached or on failure
  135.      *
  136.      * @see DB_result::fetchInto()
  137.      * @access private
  138.      */
  139.     function fetchInto($result&$arr$fetchmode$rownum=null)
  140.     {
  141.         if ($rownum === null{
  142.             $rownum $this->res_row[(int)$result]++;
  143.         }
  144.         if ($fetchmode DB_FETCHMODE_ASSOC{
  145.             $arr @dbase_get_record_with_names($this->connection$rownum);
  146.             if ($this->options['portability'DB_PORTABILITY_LOWERCASE && $arr{
  147.                 $arr array_change_key_case($arrCASE_LOWER);
  148.             }
  149.         else {
  150.             $arr @dbase_get_record($this->connection$rownum);
  151.         }
  152.         if (!$arr{
  153.             return null;
  154.         }
  155.         if ($this->options['portability'DB_PORTABILITY_RTRIM{
  156.             $this->_rtrimArrayValues($arr);
  157.         }
  158.         if ($this->options['portability'DB_PORTABILITY_NULL_TO_EMPTY{
  159.             $this->_convertNullArrayValuesToEmpty($arr);
  160.         }
  161.         return DB_OK;
  162.     }
  163.  
  164.     // }}}
  165.     // {{{ numCols()
  166.  
  167.     function numCols($foo)
  168.     {
  169.         return @dbase_numfields($this->connection);
  170.     }
  171.  
  172.     // }}}
  173.     // {{{ numRows()
  174.  
  175.     function numRows($foo)
  176.     {
  177.         return @dbase_numrecords($this->connection);
  178.     }
  179.  
  180.     // }}}
  181.     // {{{ quoteSmart()
  182.  
  183.     /**
  184.      * Format input so it can be safely used in a query
  185.      *
  186.      * @param mixed $in  data to be quoted
  187.      *
  188.      * @return mixed Submitted variable's type = returned value:
  189.      *                + null = the string <samp>NULL</samp>
  190.      *                + boolean = <samp>T</samp> if true or
  191.      *                  <samp>F</samp> if false.  Use the <kbd>Logical</kbd>
  192.      *                  data type.
  193.      *                + integer or double = the unquoted number
  194.      *                + other (including strings and numeric strings) =
  195.      *                  the data with single quotes escaped by preceeding
  196.      *                  single quotes then the whole string is encapsulated
  197.      *                  between single quotes
  198.      *
  199.      * @internal
  200.      */
  201.     function quoteSmart($in)
  202.     {
  203.         if (is_int($in|| is_double($in)) {
  204.             return $in;
  205.         elseif (is_bool($in)) {
  206.             return $in 'T' 'F';
  207.         elseif (is_null($in)) {
  208.             return 'NULL';
  209.         else {
  210.             return "'" $this->escapeSimple($in"'";
  211.         }
  212.     }
  213.  
  214.     // }}}
  215.  
  216. }
  217.  
  218. /*
  219.  * Local variables:
  220.  * tab-width: 4
  221.  * c-basic-offset: 4
  222.  * End:
  223.  */
  224.  
  225. ?>

Documentation generated on Mon, 11 Mar 2019 13:56:41 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.