php mysql 封装类实例代码
废话不多说了,具体代码如下所示:
<?php
classmysql{
private$db_host;//数据库主机
private$db_user;//数据库用户名
private$db_pwd;//数据库用户名密码
private$db_database;//数据库名
private$conn;//数据库连接标识;
private$result;//执行query命令的结果资源标识
private$sql;//sql执行语句
private$row;//返回的条目数
private$coding;//数据库编码,GBK,UTF8,gb2312
private$bulletin=true;//是否开启错误记录
private$show_error=false;//测试阶段,显示所有错误,具有安全隐患,默认关闭
private$is_error=false;//发现错误是否立即终止,默认true,建议不启用,因为当有问题时用户什么也看不到是很苦恼的
/*构造函数*/
publicfunction__construct($db_host,$db_user,$db_pwd,$db_database,$conn,$coding){
$this->db_host=$db_host;
$this->db_user=$db_user;
$this->db_pwd=$db_pwd;
$this->db_database=$db_database;
$this->conn=$conn;
$this->coding=$coding;
$this->connect();
}
/*数据库连接*/
publicfunctionconnect(){
if($this->conn=="pconn"){
//永久链接
$this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);
}else{
//即使链接
$this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
}
if(!mysql_select_db($this->db_database,$this->conn)){
if($this->show_error){
$this->show_error("数据库不可用:",$this->db_database);
}
}
mysql_query("SETNAMES$this->coding");
}
/*数据库执行语句,可执行查询添加修改删除等任何sql语句*/
publicfunctionquery($sql){
if($sql==""){
$this->show_error("SQL语句错误:","SQL查询语句为空");
}
$this->sql=$sql;
$result=mysql_query($this->sql,$this->conn);
if(!$result){
//调试中使用,sql语句出错时会自动打印出来
if($this->show_error){
$this->show_error("错误SQL语句:",$this->sql);
}
}else{
$this->result=$result;
}
return$this->result;
}
/*创建添加新的数据库*/
publicfunctioncreate_database($database_name){
$database=$database_name;
$sqlDatabase='createdatabase'.$database;
$this->query($sqlDatabase);
}
/*查询服务器所有数据库*/
//将系统数据库与用户数据库分开,更直观的显示?
publicfunctionshow_databases(){
$this->query("showdatabases");
echo"现有数据库:".$amount=$this->db_num_rows($rs);
echo"<br/>";
$i=1;
while($row=$this->fetch_array($rs)){
echo"$i$row[Database]";
echo"<br/>";
$i++;
}
}
//以数组形式返回主机中所有数据库名
publicfunctiondatabases(){
$rsPtr=mysql_list_dbs($this->conn);
$i=0;
$cnt=mysql_num_rows($rsPtr);
while($i<$cnt){
$rs[]=mysql_db_name($rsPtr,$i);
$i++;
}
return$rs;
}
/*查询数据库下所有的表*/
publicfunctionshow_tables($database_name){
$this->query("showtables");
echo"现有数据库:".$amount=$this->db_num_rows($rs);
echo"<br/>";
$i=1;
while($row=$this->fetch_array($rs)){
$columnName="Tables_in_".$database_name;
echo"$i$row[$columnName]";
echo"<br/>";
$i++;
}
}
/*
mysql_fetch_row()array$row[0],$row[1],$row[2]
mysql_fetch_array()array$row[0]或$row[id]
mysql_fetch_assoc()array用$row->content字段大小写敏感
mysql_fetch_object()object用$row[id],$row[content]字段大小写敏感
*/
/*取得结果数据*/
publicfunctionmysql_result_li(){
returnmysql_result($str);
}
/*取得记录集,获取数组-索引和关联,使用$row['content']*/
publicfunctionfetch_array($resultt=""){
if($resultt<>""){
returnmysql_fetch_array($resultt);
}else{
returnmysql_fetch_array($this->result);
}
}
//获取关联数组,使用$row['字段名']
publicfunctionfetch_assoc(){
returnmysql_fetch_assoc($this->result);
}
//获取数字索引数组,使用$row[0],$row[1],$row[2]
publicfunctionfetch_row(){
returnmysql_fetch_row($this->result);
}
//获取对象数组,使用$row->content
publicfunctionfetch_Object(){
returnmysql_fetch_object($this->result);
}
//简化查询select
publicfunctionfindall($table){
$this->query("SELECT*FROM$table");
}
//简化查询select
publicfunctionselect($table,$columnName="*",$condition='',$debug=''){
$condition=$condition?'Where'.$condition:NULL;
if($debug){
echo"SELECT$columnNameFROM$table$condition";
}else{
$this->query("SELECT$columnNameFROM$table$condition");
}
}
//简化删除del
publicfunctiondelete($table,$condition,$url=''){
if($this->query("DELETEFROM$tableWHERE$condition")){
if(!empty($url))
$this->Get_admin_msg($url,'删除成功!');
}
}
//简化插入insert
publicfunctioninsert($table,$columnName,$value,$url=''){
if($this->query("INSERTINTO$table($columnName)VALUES($value)")){
if(!empty($url))
$this->Get_admin_msg($url,'添加成功!');
}
}
//简化修改update
publicfunctionupdate($table,$mod_content,$condition,$url=''){
//echo"UPDATE$tableSET$mod_contentWHERE$condition";exit();
if($this->query("UPDATE$tableSET$mod_contentWHERE$condition")){
if(!empty($url))
$this->Get_admin_msg($url);
}
}
/*取得上一步INSERT操作产生的ID*/
publicfunctioninsert_id(){
returnmysql_insert_id();
}
//指向确定的一条数据记录
publicfunctiondb_data_seek($id){
if($id>0){
$id=$id-1;
}
if(!@mysql_data_seek($this->result,$id)){
$this->show_error("SQL语句有误:","指定的数据为空");
}
return$this->result;
}
//根据select查询结果计算结果集条数
publicfunctiondb_num_rows(){
if($this->result==null){
if($this->show_error){
$this->show_error("SQL语句错误","暂时为空,没有任何内容!");
}
}else{
returnmysql_num_rows($this->result);
}
}
//根据insert,update,delete执行结果取得影响行数
publicfunctiondb_affected_rows(){
returnmysql_affected_rows();
}
//输出显示sql语句
publicfunctionshow_error($message="",$sql=""){
if(!$sql){
echo"<fontcolor='red'>".$message."</font>";
echo"<br/>";
}else{
echo"<fieldset>";
echo"<legend>错误信息提示:</legend><br/>";
echo"<divstyle='font-size:14px;clear:both;font-family:Verdana,Arial,Helvetica,sans-serif;'>";
echo"<divstyle='height:20px;background:#000000;border:1px#000000solid'>";
echo"<fontcolor='white'>错误号:12142</font>";
echo"</div><br/>";
echo"错误原因:".mysql_error()."<br/><br/>";
echo"<divstyle='height:20px;background:#FF0000;border:1px#FF0000solid'>";
echo"<fontcolor='white'>".$message."</font>";
echo"</div>";
echo"<fontcolor='red'><pre>".$sql."</pre></font>";
$ip=$this->getip();
if($this->bulletin){
$time=date("Y-m-dH:i:s");
$message=$message."\r\n$this->sql"."\r\n客户IP:$ip"."\r\n时间:$time"."\r\n\r\n";
$server_date=date("Y-m-d");
$filename=$server_date.".txt";
$file_path="error/".$filename;
$error_content=$message;
//$error_content="错误的数据库,不可以链接";
$file="error";//设置文件保存目录
//建立文件夹
if(!file_exists($file)){
if(!mkdir($file,0777)){
//默认的mode是0777,意味着最大可能的访问权
die("uploadfilesdirectorydoesnotexistandcreationfailed");
}
}
//建立txt日期文件
if(!file_exists($file_path)){
//echo"建立日期文件";
fopen($file_path,"w+");
//首先要确定文件存在并且可写
if(is_writable($file_path)){
//使用添加模式打开$filename,文件指针将会在文件的开头
if(!$handle=fopen($file_path,'a')){
echo"不能打开文件$filename";
exit;
}
//将$somecontent写入到我们打开的文件中。
if(!fwrite($handle,$error_content)){
echo"不能写入到文件$filename";
exit;
}
//echo"文件$filename写入成功";
echo"——错误记录被保存!";
//关闭文件
fclose($handle);
}else{
echo"文件$filename不可写";
}
}else{
//首先要确定文件存在并且可写
if(is_writable($file_path)){
//使用添加模式打开$filename,文件指针将会在文件的开头
if(!$handle=fopen($file_path,'a')){
echo"不能打开文件$filename";
exit;
}
//将$somecontent写入到我们打开的文件中。
if(!fwrite($handle,$error_content)){
echo"不能写入到文件$filename";
exit;
}
//echo"文件$filename写入成功";
echo"——错误记录被保存!";
//关闭文件
fclose($handle);
}else{
echo"文件$filename不可写";
}
}
}
echo"<br/>";
if($this->is_error){
exit;
}
}
echo"</div>";
echo"</fieldset>";
echo"<br/>";
}
//释放结果集
publicfunctionfree(){
@mysql_free_result($this->result);
}
//数据库选择
publicfunctionselect_db($db_database){
returnmysql_select_db($db_database);
}
//查询字段数量
publicfunctionnum_fields($table_name){
//returnmysql_num_fields($this->result);
$this->query("select*from$table_name");
echo"<br/>";
echo"字段数:".$total=mysql_num_fields($this->result);
echo"<pre>";
for($i=0;$i<$total;$i++){
print_r(mysql_fetch_field($this->result,$i));
}
echo"</pre>";
echo"<br/>";
}
//取得MySQL服务器信息
publicfunctionmysql_server($num=''){
switch($num){
case1:
returnmysql_get_server_info();//MySQL服务器信息
break;
case2:
returnmysql_get_host_info();//取得MySQL主机信息
break;
case3:
returnmysql_get_client_info();//取得MySQL客户端信息
break;
case4:
returnmysql_get_proto_info();//取得MySQL协议信息
break;
default:
returnmysql_get_client_info();//默认取得mysql版本信息
}
}
//析构函数,自动关闭数据库,垃圾回收机制
publicfunction__destruct(){
if(!empty($this->result)){
$this->free();
}
mysql_close($this->conn);
}//function__destruct();
/*获得客户端真实的IP地址*/
functiongetip(){
if(getenv("HTTP_CLIENT_IP")&&strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")){
$ip=getenv("HTTP_CLIENT_IP");
}else
if(getenv("HTTP_X_FORWARDED_FOR")&&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown")){
$ip=getenv("HTTP_X_FORWARDED_FOR");
}else
if(getenv("REMOTE_ADDR")&&strcasecmp(getenv("REMOTE_ADDR"),"unknown")){
$ip=getenv("REMOTE_ADDR");
}else
if(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],"unknown")){
$ip=$_SERVER['REMOTE_ADDR'];
}else{
$ip="unknown";
}
return($ip);
}
functioninject_check($sql_str){//防止注入
$check=eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile',$sql_str);
if($check){
echo"输入非法注入内容!";
exit();
}else{
return$sql_str;
}
}
functioncheckurl(){//检查来路
if(preg_replace("/https?:\/\/([^\:\/]+).*/i","\\1",$_SERVER['HTTP_REFERER'])!==preg_replace("/([^\:]+).*/","\\1",$_SERVER['HTTP_HOST'])){
header("Location:http://www.dareng.com");
exit();
}
}
}
?>
以上所述是小编给大家介绍的phpmysql封装类实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对毛票票网站的支持!