今天写的数据库操作的一个类
时间:2006-04-21 来源:webvista
?php
/**
* 系统要求 PHP5
*/
/**
* Enter description here...
*
* @param String $tablePre ='TB_' 表的前缀
*/
Class MySQL {
public $connetNums = 0; // 数据库当前页面连接次数
/**
* 数据库连接
*
* @param String $dbhost 服务器名
* @param String $dbuser 用户名
* @param String $dbpw 密码
* @param String $dbname 数据库名
* @param bool $pconnect 是否永久连接
*/
function MySQL($pconnect = 0) {
global $dbcharset,$dbhost, $dbuser, $dbpw,$dbname;
if($pconnect) {
if(!@mysql_pconnect($dbhost, $dbuser, $dbpw)) {
$this->Err('MYSQL 不能永久连接数据库,请确定数据库用户名,密码设置正确,并且服务器支持永久连接
');
exit;
}
} else {
if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
$this->Err('MYSQL 连接数据库失败,请确定数据库用户名,密码设置正确
');
exit;
}
}
if($this->version() '4.3.0') die('需要PHP版本>=4.3.0');
if($this->version() > '4.1') {
if(@$dbcharset){
mysql_query("SET NAMES '$dbcharset'");
}
}
if( $this->version() > '5.0.1' ){
mysql_query("SET sql_mode=''");
}
if(!mysql_select_db($dbname)){
$this->Err("MYSQL 连接成功,但当前使用的数据库 {$dbname} 不存在
");
exit;
}
}
// 获取MySQL版本
function version(){
return mysql_get_server_info();
}
// 关闭数据库
public function close() {
return mysql_close(); echo 'mysql closed';
}
// 选择数据库
function selectDB($db=''){
$db or die('当前数据库名为空
');
if (!mysql_select_db($db)){
$this->Err("当前使用的数据库 {$db} 不存在
");
}
}
/**
* 简单查询
*
* @param String $SQL
* @param const $type
* @return mixed
*/
function query($SQL,$type='') {
$query = ($type=='U_B' && @function_exists('mysql_unbuffered_query')) ?
mysql_unbuffered_query($SQL) : mysql_query($SQL);
$this->connetNums++;
if (!$query) $this->Err("数据库连接出错:$SQL
");
return $query;
}
/**
* 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行
*
* @param String $SQL
* @return array $RS 结果记录集
*/
function getOne($SQL){
$query=$this->query($SQL,'U_B');
$RS =& mysql_fetch_array($query, MYSQL_ASSOC);
return $RS;
}
/**
* 从结果集获取并生成数组
*
* @param array $query 结果集
* @param const $resultType
* @return mixed 关联数组结果
*/
function fetchArray($query, $resultType = MYSQL_ASSOC) {
return mysql_fetch_array($query, $resultType);
}
/**
* 取得前一次 MySQL 操作所影响的记录行数
*
* @return int 行数
*/
function affectedRows() {
return mysql_affected_rows();
}
/**
* 取得结果集中行的数目
*
* @param String $query
* @return int 行数
*/
function numRows($query) {
$rows = mysql_num_rows($query);
return $rows;
}
/**
* 释放MySQL结果内存
* 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。
* 在脚本结束后所有关联的内存都会被自动释放。
*
* @param String $query
* @return boolean
*/
function free_result($query) {
return mysql_free_result($query);
}
/**
* 取得上一步 INSERT 操作产生的 ID
*
* @return int $id
*/
function insert_id() {
$id = mysql_insert_id();
return $id;
}
/**
* 从文件载入SQL
*
* @param String $file (表单传来)文件的路径
* @param String $replace
* @return String $check
*/
function insert_file($file,$replace=''){
global $filedb,$timestamp;
$readfiles=file_get_contents($file); //如果改用readfile()可以使用更早版本的PHP
if($replace){
$readfiles=str_replace('$timestamp',"$timestamp",$readfiles);
}
$detail=explode("\n",$readfiles);
$count=count($detail);
for($j=0;$j$count;$j++){
$ck=substr($detail[$j],0,4);
if( ereg("#",$ck)||ereg("--",$ck) ){
continue;
}
$array[]=$detail[$j];
}
$read=implode("\n",$array);
$sql=str_replace("\r",'',$read);
$detail=explode(";\n",$sql);
$count=count($detail);
for($i=0;$i$count;$i++){
$sql=str_replace("\r",'',$detail[$i]);
$sql=str_replace("\n",'',$sql);
$sql=trim($sql);
if($sql){
$this->query($sql);
$check++;
}
}
return $check;
}
/**
* 错误提示
*
* @param String $msg
* @return String 错误信息
*/
function Err($msg='') {
$sqlerror = mysql_error();
$sqlerrno = mysql_errno();
echo "$msg
$sqlerror
$sqlerrno";
}
}
?>
相关阅读 更多 +