mysql相关类

2
@Ta 2014-02-03 3105点击
<?php
class dbstuff {
	var $querynum = 0;
	var $querytime=0;
	var $link;
	var $charset;
	function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
		if($pconnect) {
			if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {
				$halt && $this->halt('Can not connect to MySQL server');
			}
		} else {
			if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1)) {
				$halt && $this->halt('Can not connect to MySQL server');
			}
		}
		if($this->version() > '4.1') {

			if($this->charset) {

				@mysql_query("SET character_set_connection=$this->charset, character_set_results=$this->charset, character_set_client=binary", $this->link);

			}

			if($this->version() > '5.0.1') {

				@mysql_query("SET sql_mode=''", $this->link);

			}

		}

		if($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 query($sql, $type = '') {	

		$time_start=explode(" ",microtime());

		if(D_BUG) {

			global $_SGLOBAL;

			$sqlstarttime = $sqlendttime = 0;

			$mtime = explode(' ', microtime());

			$sqlstarttime = number_format(($mtime[1] + $mtime[0] - $_SGLOBAL['supe_starttime']), 6) * 1000;

		}

		$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?

			'mysql_unbuffered_query' : 'mysql_query';

		if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {

			$this->halt('MySQL Query Error', $sql);

		}

		if(D_BUG) {

			$mtime = explode(' ', microtime());

			$sqlendttime = number_format(($mtime[1] + $mtime[0] - $_SGLOBAL['supe_starttime']), 6) * 1000;

			$sqltime = round(($sqlendttime - $sqlstarttime), 3);

			

			$explain = array();

			$info = mysql_info();

			if($query && preg_match("/^(select )/i", $sql)) {

				$explain = mysql_fetch_assoc(mysql_query('EXPLAIN '.$sql, $this->link));

			}

			$_SGLOBAL['debug_query'][] = array('sql'=>$sql, 'time'=>$sqltime, 'info'=>$info, 'explain'=>$explain);

		}

		$this->querynum++;

		$time_end=explode(" ",microtime());

		$c=$time_end[0]+$time_end[1]-$time_start[0]-$time_start[1];

		$this->querytime=floatval($c)+floatval($this->querytime);

		return $query;

	}

	///当更新space时删除相应的memcache

	function delspacememcache($sql)

	{

		global $_SGLOBAL, $_SCONFIG,$_SC;

		if (stristr($sql, "UPDATE uchome_space")==true)

		{

			$uidstr=stristr(str_replace('`','',$sql),"uid=");

			$uid=substr($uidstr,5,strlen ($uidstr)-6);

			$mc = new memcached($_SC['memcache']);

			$cachename = "space_".$uid."_uid";

			//echo $cachename;

			$mc->delete($cachename);

		}

	}

	

	//把update的sql语句放到memcache。方便合成

	function addtomemecahe($sqlstr)

	{

		global $_SGLOBAL, $_SCONFIG,$_SC;

		$exptime=60*1;//分钟为单位	

		if (stristr($sqlstr, "update ")==true)

		{

			$mc = new memcached($_SC['memcache']);

			$cachename = "space_update_sql";

			$res=$mc->get($cachename);

			//$mc->delete($cachename);

			if(empty($res))

			{

				$res=array();

				array_push($res ,$sqlstr);		

				$mc->add($cachename,$res,$exptime);

			}

			else

			{				

				array_push($res ,$sqlstr);

				$mc->replace($cachename,$res,$exptime);				

			}			

		}

		if (stristr($sqlstr, "insert ")==true)

		{						

			$mc = new memcached($_SC['memcache']);

			$cachename = "space_insert_sql";

			$res2=$mc->get($cachename);

			//$mc->delete($cachename);

			if(empty($res2))

			{

				$res2=array();

				array_push($res2 ,$sqlstr);		

				$mc->add($cachename,$res2,$exptime);

			}

			else

			{				

				array_push($res2 ,$sqlstr);

				$mc->replace($cachename,$res2,$exptime);				

			}			

		}

	}

	

	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) {

		$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 fetch_first($sql) {

		return $this->fetch_array($this->query($sql));

	}

	

	function result_first($sql) {

		return $this->result($this->query($sql), 0);

	}

	function version() {

		return mysql_get_server_info($this->link);

	}

	

	function close() {

		return mysql_close($this->link);

	}

	function ping(){

		global $_SGLOBAL, $_SC;

		if(!mysql_ping($this->link)){

			mysql_close($this->link); //注意:一定要先执行数据库关闭,这是关键

			$_SGLOBAL['db'] = new dbstuff;

			$_SGLOBAL['db']->charset = $_SC['dbcharset'];

			$_SGLOBAL['db']->connect($_SC['dbhost'], $_SC['dbuser'], $_SC['dbpw'], $_SC['dbname'], $_SC['pconnect']);

		}	

	} 

	function halt($message = '', $sql = '') {
		$dberror = $this->error();
		$dberrno = $this->errno();
		$help_link = "http://baidu.com/s?word=数据库常见错误";
		echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\">
				<b>MySQL Error</b><br>
				<b>Message</b>: $message<br>
				<b>SQL</b>: $sql<br>
				<b>Error</b>: $dberror<br>
				<b>Errno.</b>: $dberrno<br>
				<a href=\"$help_link\" target=\"_blank\">Click here to seek help.</a>
				</div>";

		exit();

	}

}



?>
回复列表(9|显示机器人聊天)
  • @Ta / 2014-02-03 / /
    6页,没看完。。。。
  • @Ta / 2014-02-03 / /
    为什么不直接用pdo_mysql呢?
  • @Ta / 2014-02-03 / /
    6页。。。直接不看了{呲牙}
  • 2
    @Ta / 2014-02-03 / /
    @,我不会,能请教下吗?看我历史贴有一贴关于pdo连接的。。。谢谢
  • 2
    @Ta / 2014-02-03 / /
    @,你能看看我的代码吗?好让我知道哪儿错了
    $dns='mysql:host=localhost;dbname=qq';
    $sql=new PDO($dns,'root','');
    $sql->query('set names utf8;');
    $rs=$sql->query(”select * from qz_user”);
    $row=$rs->fetchAll();
    print_r($row);
    
    

    为什么会显示Parse error: syntax error, unexpected 'qz_user' (T_STRING) in
  • @Ta / 2014-02-03 / /
    @齐子,你的双引号是全角(“”)的,要用半角引号("")
  • 2
    @Ta / 2014-02-03 / /
    @,明明是半角啊
  • @Ta / 2014-02-03 / /
    @齐子,不可能,你改一下试试,肯定可以
添加新回复
回复需要登录