MYSQL类

<?php

class mysql
{
	private $_conn = '';
	
	public function __construct($hostname, $username, $password, $database)
	{
		if (!$this->_conn = mysql_connect($hostname, $username, $password)) {
			exit('Error: Could not make a database connection using ' . $username . '@' . $hostname);
		}
		
		if (!mysql_select_db($database, $this->_conn)) {
			exit('Error: Could not connect to database ' . $database);
		}
		
		mysql_query("SET NAMES 'utf8'", $this->_conn);
		mysql_query("SET CHARACTER SET utf8", $this->_conn);
		mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->_conn);
		mysql_query("SET SQL_MODE=''", $this->_conn);
	}

	public function query($sql)
	{
		$resource = mysql_query($sql);
		if ($resource) {
			if (is_resource($resource)) {

				$i = 0;
				$data = array();
				while ($result = mysql_fetch_assoc($resource)) {
					$data[$i] = $result;
					$i++;
				}

				mysql_free_result($resource);

				$query = new stdClass();
				$query->row      = isset($data[0]) ? $data[0] : array();
				$query->rows     = $data;
				$query->num_rows = $i;

				unset($data);

				return $query;
			} else {
				return true;
			}
		} else {
			exit('Error: ' . mysql_error($this->_conn) . '<br />Error No: ' . mysql_errno($this->_conn) . '<br />' . $sql);
		}
	}
	
	public function escape($value)
	{
		return mysql_real_escape_string($value, $this->_conn);
	}
	
	public function get_last_id()
	{
		return mysql_insert_id($this->_conn);
	}
	
	public function __destruct()
	{
		mysql_close($this->_conn);
	}
}


使用”SET NAMES utf8″,就是告诉服务器,我用的是utf-8编码, 我希望你也给我返回utf-8编码的查询结果。
mysql_real_escape_string() 和 mysql_escape_string() 的区别是, 它会考虑”当前”字符集 mysql->charset。
mysql_real_escape_string() 在判断宽字符集的字符的时候,就根据这个成员变量来分别采用不同的策略,比如如果是utf-8, 那么就会采用libmysql/ctype-utf8.c。

MySQL字符集设置

• 系统变量:

– character_set_server:默认的内部操作字符集

– character_set_client:客户端来源数据使用的字符集

– character_set_connection:连接层字符集

– character_set_results:查询结果字符集

– character_set_database:当前选中数据库的默认字符集

– character_set_system:系统元数据(字段名等)字符集



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值