如标题,求一个PHP连接MYSQL的类,谢谢!
解决方案 »
- mvc中如下结构该怎么改代码?
- 没注意到的问题:PHP为什么不用指定页面字符集?
- PHP读TXT编码问题
- 正在做个论坛,关于有人回复就置顶的功能,给个思路吧!
- 求助,高难度问题,高并发的SQL插入.
- 请问使用DISCUZ!的论坛,如果租虚拟主机,需要额外租MYSQL数据库吗?
- 用socket如何编写下列http://211.100.115.37/lxd/liuyue.php?username=try2&password=060621&birth=19530528&length=70的HTTP协议的POST
- 怎么取得连接过来的页面的地址 急 在线等
- 请问file函数的问题。
- 如何判断文本文件的空行?
- 模仿昨天前辈, 火影忍者最新漫画浏览 面翻页痛苦
- 和大家分享PHP网站开发的乐趣
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';
}
}
<?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">到 http://faq.comsenz.com 搜索此错误的解决方案</a></p>'; exit();}?>
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();
}
}}
/***************************************************************************
* 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
?>