home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phpnuke / PHP-Nuke-7.5.exe / html / db / mysql4.php < prev    next >
PHP Script  |  2004-01-29  |  6KB  |  341 lines

  1. <?php
  2. /***************************************************************************
  3.  *                                 mysql4.php
  4.  *                            -------------------
  5.  *   begin                : Saturday, Feb 13, 2001
  6.  *   copyright            : (C) 2001 The phpBB Group
  7.  *   email                : supportphpbb.com
  8.  *
  9.  *   $Id: mysql4.php,v 1.5 2002/04/02 21:13:47 the_systech Exp $
  10.  *
  11.  ***************************************************************************/
  12.  
  13. /***************************************************************************
  14.  *
  15.  *   This program is free software; you can redistribute it and/or modify
  16.  *   it under the terms of the GNU General Public License as published by
  17.  *   the Free Software Foundation; either version 2 of the License, or
  18.  *   (at your option) any later version.
  19.  *
  20.  ***************************************************************************/
  21.  
  22. if(!defined("SQL_LAYER"))
  23. {
  24.  
  25. define("SQL_LAYER","mysql4");
  26.  
  27. class sql_db
  28. {
  29.  
  30.     var $db_connect_id;
  31.     var $query_result;
  32.     var $row = array();
  33.     var $rowset = array();
  34.     var $num_queries = 0;
  35.     var $in_transaction = 0;
  36.  
  37.     //
  38.     // Constructor
  39.     //
  40.     function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
  41.     {
  42.         $this->persistency = $persistency;
  43.         $this->user = $sqluser;
  44.         $this->password = $sqlpassword;
  45.         $this->server = $sqlserver;
  46.         $this->dbname = $database;
  47.  
  48.         $this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server, $this->user, $this->password) : mysql_connect($this->server, $this->user, $this->password);
  49.  
  50.         if( $this->db_connect_id )
  51.         {
  52.             if( $database != "" )
  53.             {
  54.                 $this->dbname = $database;
  55.                 $dbselect = mysql_select_db($this->dbname);
  56.  
  57.                 if( !$dbselect )
  58.                 {
  59.                     mysql_close($this->db_connect_id);
  60.                     $this->db_connect_id = $dbselect;
  61.                 }
  62.             }
  63.  
  64.             return $this->db_connect_id;
  65.         }
  66.         else
  67.         {
  68.             return false;
  69.         }
  70.     }
  71.  
  72.     //
  73.     // Other base methods
  74.     //
  75.     function sql_close()
  76.     {
  77.         if( $this->db_connect_id )
  78.         {
  79.             //
  80.             // Commit any remaining transactions
  81.             //
  82.             if( $this->in_transaction )
  83.             {
  84.                 mysql_query("COMMIT", $this->db_connect_id);
  85.             }
  86.  
  87.             return mysql_close($this->db_connect_id);
  88.         }
  89.         else
  90.         {
  91.             return false;
  92.         }
  93.     }
  94.  
  95.     //
  96.     // Base query method
  97.     //
  98.     function sql_query($query = "", $transaction = FALSE)
  99.     {
  100.         //
  101.         // Remove any pre-existing queries
  102.         //
  103.         unset($this->query_result);
  104.  
  105.         if( $query != "" )
  106.         {
  107.             $this->num_queries++;
  108.             if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
  109.             {
  110.                 $result = mysql_query("BEGIN", $this->db_connect_id);
  111.                 if(!$result)
  112.                 {
  113.                     return false;
  114.                 }
  115.                 $this->in_transaction = TRUE;
  116.             }
  117.  
  118.             $this->query_result = mysql_query($query, $this->db_connect_id);
  119.         }
  120.         else
  121.         {
  122.             if( $transaction == END_TRANSACTION && $this->in_transaction )
  123.             {
  124.                 $result = mysql_query("COMMIT", $this->db_connect_id);
  125.             }
  126.         }
  127.  
  128.         if( $this->query_result )
  129.         {
  130.             unset($this->row[$this->query_result]);
  131.             unset($this->rowset[$this->query_result]);
  132.  
  133.             if( $transaction == END_TRANSACTION && $this->in_transaction )
  134.             {
  135.                 $this->in_transaction = FALSE;
  136.  
  137.                 if ( !mysql_query("COMMIT", $this->db_connect_id) )
  138.                 {
  139.                     mysql_query("ROLLBACK", $this->db_connect_id);
  140.                     return false;
  141.                 }
  142.             }
  143.             
  144.             return $this->query_result;
  145.         }
  146.         else
  147.         {
  148.             if( $this->in_transaction )
  149.             {
  150.                 mysql_query("ROLLBACK", $this->db_connect_id);
  151.                 $this->in_transaction = FALSE;
  152.             }
  153.             return false;
  154.         }
  155.     }
  156.  
  157.     //
  158.     // Other query methods
  159.     //
  160.     function sql_numrows($query_id = 0)
  161.     {
  162.         if( !$query_id )
  163.         {
  164.             $query_id = $this->query_result;
  165.         }
  166.  
  167.         return ( $query_id ) ? mysql_num_rows($query_id) : false;
  168.     }
  169.  
  170.     function sql_affectedrows()
  171.     {
  172.         return ( $this->db_connect_id ) ? mysql_affected_rows($this->db_connect_id) : false;
  173.     }
  174.  
  175.     function sql_numfields($query_id = 0)
  176.     {
  177.         if( !$query_id )
  178.         {
  179.             $query_id = $this->query_result;
  180.         }
  181.  
  182.         return ( $query_id ) ? mysql_num_fields($query_id) : false;
  183.     }
  184.  
  185.     function sql_fieldname($offset, $query_id = 0)
  186.     {
  187.         if( !$query_id )
  188.         {
  189.             $query_id = $this->query_result;
  190.         }
  191.  
  192.         return ( $query_id ) ? mysql_field_name($query_id, $offset) : false;
  193.     }
  194.  
  195.     function sql_fieldtype($offset, $query_id = 0)
  196.     {
  197.         if( !$query_id )
  198.         {
  199.             $query_id = $this->query_result;
  200.         }
  201.  
  202.         return ( $query_id ) ? mysql_field_type($query_id, $offset) : false;
  203.     }
  204.  
  205.     function sql_fetchrow($query_id = 0)
  206.     {
  207.         if( !$query_id )
  208.         {
  209.             $query_id = $this->query_result;
  210.         }
  211.  
  212.         if( $query_id )
  213.         {
  214.             $this->row[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC);
  215.             return $this->row[$query_id];
  216.         }
  217.         else
  218.         {
  219.             return false;
  220.         }
  221.     }
  222.  
  223.     function sql_fetchrowset($query_id = 0)
  224.     {
  225.         if( !$query_id )
  226.         {
  227.             $query_id = $this->query_result;
  228.         }
  229.  
  230.         if( $query_id )
  231.         {
  232.             unset($this->rowset[$query_id]);
  233.             unset($this->row[$query_id]);
  234.  
  235.             while($this->rowset[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC))
  236.             {
  237.                 $result[] = $this->rowset[$query_id];
  238.             }
  239.  
  240.             return $result;
  241.         }
  242.         else
  243.         {
  244.             return false;
  245.         }
  246.     }
  247.  
  248.     function sql_fetchfield($field, $rownum = -1, $query_id = 0)
  249.     {
  250.         if( !$query_id )
  251.         {
  252.             $query_id = $this->query_result;
  253.         }
  254.  
  255.         if( $query_id )
  256.         {
  257.             if( $rownum > -1 )
  258.             {
  259.                 $result = mysql_result($query_id, $rownum, $field);
  260.             }
  261.             else
  262.             {
  263.                 if( empty($this->row[$query_id]) && empty($this->rowset[$query_id]) )
  264.                 {
  265.                     if( $this->sql_fetchrow() )
  266.                     {
  267.                         $result = $this->row[$query_id][$field];
  268.                     }
  269.                 }
  270.                 else
  271.                 {
  272.                     if( $this->rowset[$query_id] )
  273.                     {
  274.                         $result = $this->rowset[$query_id][$field];
  275.                     }
  276.                     else if( $this->row[$query_id] )
  277.                     {
  278.                         $result = $this->row[$query_id][$field];
  279.                     }
  280.                 }
  281.             }
  282.  
  283.             return $result;
  284.         }
  285.         else
  286.         {
  287.             return false;
  288.         }
  289.     }
  290.  
  291.     function sql_rowseek($rownum, $query_id = 0)
  292.     {
  293.         if( !$query_id )
  294.         {
  295.             $query_id = $this->query_result;
  296.         }
  297.  
  298.         return ( $query_id ) ? mysql_data_seek($query_id, $rownum) : false;
  299.     }
  300.  
  301.     function sql_nextid()
  302.     {
  303.         return ( $this->db_connect_id ) ? mysql_insert_id($this->db_connect_id) : false;
  304.     }
  305.  
  306.     function sql_freeresult($query_id = 0)
  307.     {
  308.         if( !$query_id )
  309.         {
  310.             $query_id = $this->query_result;
  311.         }
  312.  
  313.         if ( $query_id )
  314.         {
  315.             unset($this->row[$query_id]);
  316.             unset($this->rowset[$query_id]);
  317.  
  318.             mysql_free_result($query_id);
  319.  
  320.             return true;
  321.         }
  322.         else
  323.         {
  324.             return false;
  325.         }
  326.     }
  327.  
  328.     function sql_error()
  329.     {
  330.         $result['message'] = mysql_error($this->db_connect_id);
  331.         $result['code'] = mysql_errno($this->db_connect_id);
  332.  
  333.         return $result;
  334.     }
  335.  
  336. } // class sql_db
  337.  
  338. } // if ... define
  339.  
  340. ?>
  341.