如标题,求一个PHP连接MYSQL的类,谢谢!

解决方案 »

  1.   

    别人问到,不要说是我帖的
    class dbstuff { var $version = '';
    var $querynum = 0;
    var $link = null;
                                                                               //$halt 停止
    function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE, $dbcharset2 = '') { $func = empty($pconnect) ? 'mysql_connect' : 'mysql_pconnect';
    if(!$this->link = @$func($dbhost, $dbuser, $dbpw, 1)) {           //连接失败
    $halt && $this->halt('Can not connect to MySQL server');
    } else {                                                          //连接成功
    if($this->version() > '4.1') {                                
    global $charset, $dbcharset;
    $dbcharset = $dbcharset2 ? $dbcharset2 : $dbcharset;
    $dbcharset = !$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8')) ? str_replace('-', '', $charset) : $dbcharset;
    $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';
    $serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
    $serverset && mysql_query("SET $serverset", $this->link);
    }
    $dbname && @mysql_select_db($dbname, $this->link);
    } } function select_db($dbname) {
    return mysql_select_db($dbname, $this->link);
    } function fetch_array($query, $result_type = MYSQL_ASSOC) {
    return mysql_fetch_array($query, $result_type);
    } function fetch_first($sql) {
    return $this->fetch_array($this->query($sql));
    } function result_first($sql) {
    return $this->result($this->query($sql), 0);
    } function query($sql, $type = '') { global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes; if(defined('SYS_DEBUG') && SYS_DEBUG) {
    @include_once DISCUZ_ROOT.'./include/debug.func.php';
    sqldebug($sql);
    } $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?
    'mysql_unbuffered_query' : 'mysql_query';
    if(!($query = $func($sql, $this->link))) {
    if(in_array($this->errno(), array(2006, 2013)) && substr($type, 0, 5) != 'RETRY') {
    $this->close();
    require DISCUZ_ROOT.'./config.inc.php';
    $this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
    $this->query($sql, 'RETRY'.$type);
    } elseif($type != 'SILENT' && substr($type, 5) != 'SILENT') {
    $this->halt('MySQL Query Error', $sql);
    }
    } $this->querynum++;
    return $query;
    } function affected_rows() {
    return mysql_affected_rows($this->link);
    } function error() {
    return (($this->link) ? mysql_error($this->link) : mysql_error());
    } function errno() {
    return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
    } function result($query, $row = 0) {
    $query = @mysql_result($query, $row);
    return $query;
    } function num_rows($query) {
    $query = mysql_num_rows($query);
    return $query;
    } function num_fields($query) {
    return mysql_num_fields($query);
    } function free_result($query) {
    return mysql_free_result($query);
    } function insert_id() {
    return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
    } function fetch_row($query) {
    $query = mysql_fetch_row($query);
    return $query;
    } function fetch_fields($query) {
    return mysql_fetch_field($query);
    } function version() {
    if(empty($this->version)) {
    $this->version = mysql_get_server_info($this->link);
    }
    return $this->version;
    } function close() {
    return mysql_close($this->link);
    } function halt($message = '', $sql = '') {
    define('CACHE_FORBIDDEN', TRUE);
    require_once DISCUZ_ROOT.'./include/db_mysql_error.inc.php';
    }
    }
      

  2.   

    db_mysql_error.inc.php文件
    <?php
    $timestamp = time();
    $errmsg = '';$dberror = $this->error();
    $dberrno = $this->errno();if($dberrno == 1114) {?>
    <html>
    <head>
    <title>Max Onlines Reached</title>
    </head>
    <body bgcolor="#FFFFFF">
    <table cellpadding="0" cellspacing="0" border="0" width="600" align="center" height="85%">
      <tr align="center" valign="middle">
        <td>
        <table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family: Verdana, Tahoma; color: #666666; font-size: 9px">
        <tr>
          <td valign="middle" align="center" bgcolor="#EBEBEB">
            <br /><b style="font-size: 10px">Forum onlines reached the upper limit</b>
            <br /><br /><br />Sorry, the number of online visitors has reached the upper limit.
            <br />Please wait for someone else going offline or visit us in idle hours.
            <br /><br />
          </td>
        </tr>
        </table>
        </td>
      </tr>
    </table>
    </body>
    </html>
    <? exit();} else { if($message) {
    $errmsg = "<b>Discuz! info</b>: $message\n\n";
    }
    if(isset($GLOBALS['_DSESSION']['discuz_user'])) {
    $errmsg .= "<b>User</b>: ".htmlspecialchars($GLOBALS['_DSESSION']['discuz_user'])."\n";
    }
    $errmsg .= "<b>Time</b>: ".gmdate("Y-n-j g:ia", $timestamp + ($GLOBALS['timeoffset'] * 3600))."\n";
    $errmsg .= "<b>Script</b>: ".$GLOBALS['PHP_SELF']."\n\n";
    if($sql) {
    $errmsg .= "<b>SQL</b>: ".htmlspecialchars($sql)."\n";
    }
    $errmsg .= "<b>Error</b>:  $dberror\n";
    $errmsg .= "<b>Errno.</b>:  $dberrno"; echo "</table></table></table></table></table>\n";
    echo "<p style=\"font-family: Verdana, Tahoma; font-size: 11px; background: #FFFFFF;\">";
    echo nl2br(str_replace($GLOBALS['tablepre'], '[Table]', $errmsg)); if($GLOBALS['adminemail']) {
    $errlog = array();
    if(@$fp = fopen(DISCUZ_ROOT.'./forumdata/dberror.log', 'r')) {
    while((!feof($fp)) && count($errlog) < 20) {
    $log = explode("\t", fgets($fp, 50));
    if($timestamp - $log[0] < 86400) {
    $errlog[$log[0]] = $log[1];
    }
    }
    fclose($fp);
    } if(!in_array($dberrno, $errlog)) {
    $errlog[$timestamp] = $dberrno;
    @$fp = fopen(DISCUZ_ROOT.'./forumdata/dberror.log', 'w');
    @flock($fp, 2);
    foreach(array_unique($errlog) as $dateline => $errno) {
    @fwrite($fp, "$dateline\t$errno");
    }
    @fclose($fp);
    if(function_exists('errorlog')) {
    errorlog('MySQL', basename($GLOBALS['_SERVER']['PHP_SELF'])." : $dberror - ".cutstr($sql, 120), 0);
    } if($GLOBALS['dbreport']) {
    echo "<br /><br />An error report has been dispatched to our administrator.";
    @sendmail($GLOBALS['adminemail'], '[Discuz!] MySQL Error Report',
    "There seems to have been a problem with the database of your Discuz! Board\n\n".
    strip_tags($errmsg)."\n\n".
    "Please check-up your MySQL server and forum scripts, similar errors will not be reported again in recent 24 hours\n".
    "If you have troubles in solving this problem, please visit Discuz! Community http://www.Discuz.net.");
    } } else {
    echo '<br /><br />Similar error report has been dispatched to administrator before.';
    } }
    echo '</p>';
    echo '<p style="font-family: Verdana, Tahoma; font-size: 12px; background: #FFFFFF;"><a href="http://faq.comsenz.com/?type=mysql&dberrno='.$dberrno.'&dberror='.rawurlencode($dberror).'" target="_blank">&#x5230; http://faq.comsenz.com &#x641c;&#x7d22;&#x6b64;&#x9519;&#x8bef;&#x7684;&#x89e3;&#x51b3;&#x65b9;&#x6848;</a></p>'; exit();}?>
      

  3.   

    DISCUZ_ROOT都出来了,怎么用啊,贴也要修改一下
      

  4.   


    class mysqldb extends mysqli
    {
        public $conn_flag;
        public $error_info;    public function __construct( $db_host, $db_user, $db_password, $db_name )
        {
            @parent::__construct( $db_host, $db_user, $db_password, $db_name );
            $this->error_info = '';
            $this->conn_flag = true;
            if ( mysqli_connect_errno() )
            {
                $this->conn_flag = false;
                $this->error_info = mysqli_connect_error();
            }
        }    public function __destruct()
        {
            if ( !mysqli_connect_errno() )
            {
                $this->close();
            }
        }}
      

  5.   

    <?
    /***************************************************************************
     *                                 Mysql.Class.php
     *                            -------------------------
     *   begin                : Thursday, Apr 27, 2006
     *   copyright            : (C) 2002 The ReQi.com
     *   email                : [email protected]
     *
     *   $Id: Mysql.Class.php,v 1.0.2.1 2006/04/27 16:23:20 Syber Exp $
     *
     ***************************************************************************//***************************************************************************
     *
     *   This program is free software; you can redistribute it and/or modify
     *   it under the terms of the GNU General Public License as published by
     *   the Free Software Foundation; either version 2 of the License, or
     *   (at your option) any later version.
     *
     ***************************************************************************//***************************************************************************
     *
     *   Thanks my love,my all,my darling.
     *
     ***************************************************************************/
    /***************************************************************************
     *
     *   Example:
     *   $mysql = new MySql_Class( 'dbuser', 'dbpassword', 'dbname', 'dbhost' );
     *   $mysql -> DBConnect();
     *   $mysql -> Post( 'UPDATE $table SET $column = $value WHERE $Expr' );
     *   $row = $mysql -> Open( 'SELECT $columns FROM $table WHERE $Expr' );
     *   $rows = $mysql -> Open( 'SELECT $columns FROM $table WHERE $Expr', True, True );
     *
     ***************************************************************************/
    Class MySql_Class
    { var $Conn;
    var $DbUser;
    var $DbPass;
    var $DbName;
    var $DbHost;
    var $DbPort;
    var $DbResult;
    var $row = array();
    var $rowset = array();
    var $num_queries = 0; Function MySql_Class( $user, $passwd, $db, $host, $port = 3306 )
    {
    $this -> DbUser = $user;
    $this -> DbPass = $passwd;
    $this -> DbName = $db;
    $this -> DbHost = $host;
    $this -> DbPort = $port;
    } // end Function //
    // Constructor
    //
    Function DBConnect( $persistency = false )
    {
    if( $persistency )
    {
    $this -> Conn = @mysql_pconnect( $this -> DbHost . ':' . $this -> DbPort, $this -> DbUser, $this -> DbPass );
    }
    else
    {
    $this->Conn = @mysql_connect( $this -> DbHost . ':' . $this -> DbPort, $this -> DbUser, $this -> DbPass );
    } if( $this -> Conn )
    {
    if( DbName != "" )
    {
    $dbselect = @mysql_select_db( $this -> DbName );
    if( !$dbselect )
    {
    @mysql_close( $this -> Conn );
    $this -> Conn = $dbselect;
    }
    }
    return $this -> Conn;
    }
    else
    {
    return false;
    }
    } // end Function Function DBClose()
    {
    if( $this -> Conn )
    {
    if( $this -> DbResult )
    {
    @mysql_free_result( $this -> DbResult );
    }
    $result = @mysql_close( $this -> Conn );
    return $result;
    }
    else
    {
    return false;
    }
    } // end Function //
    // Base query method
    // When $Affectedrows = true,then return Affectedrows
    //
    Function Post( $sql, $Affectedrows = false )
    {
    unset( $this -> DbResult );
    if( $sql != "" )
    {
    $this -> num_queries++;
    $this -> DbResult = @mysql_query( $sql, $this -> Conn );
    }
    if( $this -> DbResult )
    {
    unset( $this -> row[ $this -> DbResult ] );
    unset( $this -> rowset[ $this -> DbResult ] );
    return $Affectedrows ? $this -> AffectedRows() : $this -> DbResult;
    }
    else
    {
    return false;
    }
    } // end Function //
    // Base query method
    // $MuchRows, get one row of false, much rows of true.
    // $OutputFetch, get field row('s) of true.
    //
    Function Open( $sql, $MuchRows = false, $OutputFetch = false )
    {
    if ( $this -> Post( $sql ) )
    {
    if ( $MuchRows )
    {
    if ( $OutputFetch )
    {
    return $this -> SQL_FetchRowSet();
    }
    else
    {
    return $this -> SQL_ArrayRowSet();
    }
    }
    else
    {
    if ( $OutputFetch )
    {
    return $this -> SQL_FetchRow();
    }
    else
    {
    return $this -> SQL_ArrayRow();
    }
    }
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_FetchRow( $query_id = 0 )
    {
    if( !$query_id )
    {
    $query_id = $this -> DbResult;
    }
    if( $query_id )
    {
    $this -> row[ $query_id ] = @mysql_fetch_array( $query_id );
    return $this -> row[ $query_id ];
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_FetchRowSet( $query_id = 0 )
    {
    if( !$query_id )
    {
    $query_id = $this -> DbResult;
    }
    if( $query_id )
    {
    unset( $this -> rowset[ $query_id ] );
    unset( $this -> row[ $query_id ] );
    while( $this -> rowset[ $query_id ] = @mysql_fetch_array( $query_id ) )
    {
    $result[] = $this->rowset[ $query_id ];
    }
    return $result;
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_ArrayRow( $query_id = 0 )
    {
    if( !$query_id )
    {
    $query_id = $this -> DbResult;
    }
    if( $query_id )
    {
    $this -> row[ $query_id ] = @mysql_fetch_row( $query_id );
    return $this -> row[ $query_id ];
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_ArrayRowSet( $query_id = 0 )
    {
    if( !$query_id )
    {
    $query_id = $this -> DbResult;
    }
    if( $query_id )
    {
    unset( $this -> rowset[ $query_id ] );
    unset( $this -> row[ $query_id ] );
    while( $this -> rowset[ $query_id ] = @mysql_fetch_row( $query_id ) )
    {
    $result[] = $this->rowset[ $query_id ];
    }
    return $result;
    }
    else
    {
    return false;
    }
    } // end Function Function AffectedRows()
    {
    if( $this -> Conn )
    {
    $result = @mysql_affected_rows( $this -> Conn );
    return $result;
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_NextID()
    {
    if( $this -> Conn)
    {
    $result = @mysql_insert_id( $this -> Conn );
    return $result;
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_FreeResult( $query_id = 0 )
    {
    if( !$query_id )
    {
    $query_id = $this -> DbResult;
    } if ( $query_id )
    {
    unset( $this -> row[ $query_id ] );
    unset( $this -> rowset[ $query_id ] ); @mysql_free_result( $query_id ); return true;
    }
    else
    {
    return false;
    }
    } // end Function Function SQL_Error($query_id = 0)
    {
    $result[ "message" ] = @mysql_error( $this -> Conn);
    $result[ "code" ] = @mysql_errno( $this -> Conn); return $result;
    } // end Function} // end Class
    ?>