php数据库连接类
本文章提供了数据库连接实例,主要是讲php mysql数据相关操作,有需要的朋友可以使用看看,实例代码如下:
<?php class mysql { private $db_host ; //主机地址 private $db_user ; //用户名 private $db_pass ; //连接密码 private $db_name ; //名称 private $db_charset ; //编码 private $conn ; public $debug =false; //调试开关,默认关闭 private $query_id ; //用于判断sql语句是否执行成功 private $result ; //结果集 private $num_rows ; //结果集中行的数目,仅对select有效 private $insert_id ; //上一步 insert 操作产生的 id // 构造/析构函数 function __construct ( $db_host , $db_user , $db_pass , $db_name , $db_charset , $conn ) { $this ->db_host = $db_host ; $this ->db_user = $db_user ; $this ->db_pass = $db_pass ; $this ->db_name = $db_name ; $this ->db_charset = $db_charset ; $this ->conn = $conn ; $this ->connect(); } function __destruct () { @mysql_close( $this ->conn); } // 连接/选择数据库 public function connect () { if ( $this ->conn == 'pconn' ) { @ $this ->conn = mysql_pconnect( $this ->db_host, $this ->db_user, $this ->db_pass); } else { @ $this ->conn = mysql_connect( $this ->db_host, $this ->db_user, $this ->db_pass); } if (! $this ->conn) { $this ->show_error( '数据库-连接失败:用户名或密码错误!' ); } if (!@mysql_select_db( $this ->db_name, $this ->conn)) { $this ->show_error( "数据库-选择失败:数据库 $this->db_name 不可用" ); } mysql_query( "set names $this->db_charset" ); return $this ->conn; } // query方法 public function query ( $sql ) { if ( $this ->query_id) $this ->free_result(); $this ->query_id = @mysql_query( $sql , $this ->conn); if (! $this ->query_id) $this ->show_error( "sql语句 <b>" $sql "</b> 执行时遇到错误" ); return $this ->query_id; } // 显示详细错误信息 public function show_error ( $msg ) { if ( $this ->debug){ $errinfo = mysql_error(); echo "错误:$msg <br/> 返回:$errinfo<p>" ; } else { echo '<p>出现错误!<p>' ; } } // 获得query执行成功与否的信息 public function get_query_info( $info ){ if ( $this ->query_id) { echo $info ; } } // 查询所有 public function findall ( $table_name ) { $this ->query( "select * from $table_name" ); } // mysql_fetch_array public function fetch_array () { if ( $this ->query_id) { $this ->result = mysql_fetch_array( $this ->query_id); return $this ->result; } } // ...... public function fetch_assoc () { if ( $this ->query_id) { $this ->result = mysql_fetch_assoc( $this ->query_id); return $this ->result; } } public function fetch_row () { if ( $this ->query_id) { $this ->result = mysql_fetch_row( $this ->query_id); return $this ->result; } } public function fetch_object () { if ( $this ->query_id) { $this ->result = mysql_fetch_object( $this ->query_id); return $this ->result; } } // 获取 num_rows public function num_rows () { if ( $this ->query_id) { $this ->num_rows = mysql_num_rows( $this ->query_id); return $this ->num_rows; } } // 获取 insert_id public function insert_id () { return $this ->insert_id = mysql_insert_id(); } // 显示共有多少张表 public function show_tables () { $this ->query( "show tables" ); if ( $this ->query_id) { echo "数据库 $this->db_name 共有 " . $this ->num_rows( $this ->query_id). " 张表<br/>" ; $i = 1; while ( $row = $this ->fetch_array( $this ->query_id)){ echo "$i -- $row[0]<br/>" ; $i ++; } } } // 显示共有多少个数据库 public function show_dbs(){ $this ->query( "show databases" ); if ( $this ->query_id) { echo "共有数据库 " . $this ->num_rows( $this ->query_id). " 个<br/>" ; $i = 1; while ( $this ->row = $this ->fetch_array( $this ->query_id)){ echo "$i -- " . $this ->row[database]. "<br />" ; $i ++; } } } // 删除数据库:返回删除结果 public function drop_db ( $db_name = '' ) { if ( $db_name == '' ) { $db_name = $this ->db_name; //默认删除当前数据库 $this ->query( "drop database $db_name" ); } else { $this ->query( "drop database $db_name" ); } if ( $this ->query_id) { return "数据库 $db_name 删除成功" ; } else { $this ->show_error( "数据库 $db_name 删除失败" ); } } // 删除数据表:返回删除结果 public function drop_table ( $table_name ) { $this ->query( "drop table $table_name" ); if ( $this ->query_id) { return "数据表 $table_name 删除成功" ; } else { $this ->show_error( "数据表 $table_name 删除失败" ); } } // 创建数据库 public function create_db ( $db_name ) { $this ->query( "create database $db_name" ); if ( $this ->query_id){ return "数据库 $db_name 创建成功" ; } else { $this ->show_error( "数据库 $db_name 创建失败" ); } //开源代码phpfensi.com } // 获取数据库版本 public function get_info(){ echo mysql_get_server_info(); } // 释放内存 public function free_result () { if ( @mysql_free_result( $this ->query_id) ) unset ( $this ->result); $this ->query_id = 0; } } // end class ?>下面提供一款自动选择数据库远程或本地连接代码:
<?php // 包含mysql操作类 include_once 'mysql.class.php' ; // 本地mysql数据 $mysql_local_data = array ( 'db_host' => 'localhost' , 'db_user' => 'root' , 'db_pass' => 'root' , 'db_name' => 'test' ); // 远程mysql数据 $mysql_remote_data = array ( 'db_host' => '61.183.41.178' , 'db_user' => 'xxx' , 'db_pass' => 'xxx' , 'db_name' => 'xxx' ); // 公用数据 $tb_prefix = 'php95_' ; $db_charset = 'utf-8' ; //本地连接成功则实例化本地mysql类,否则连接远程数据库并实例化mysql类 if (@mysql_connect( $mysql_local_data [db_host], $mysql_local_data [db_user], $mysql_local_data [db_pass])) $db = new mysql( $db_host , $mysql_local_data [db_user], $mysql_local_data [db_pass], $mysql_local_data [db_name], $db_charset , $conn ); else $db = new mysql( $mysql_remote_data [db_host], $mysql_remote_data [db_user], $mysql_remote_data [db_pass], $mysql_remote_data [db_name], $db_charset , $conn ); $db ->show_tables(); //测试:显示当前数据库下的所有表名 ?>假设我们要在test.php文件中操作虚拟主机的数据库,则首先要在本地调试,那么必然要连接本地、远程两个不同的数据库,问题:怎么让test.php自动识别当下该连接本地还是远程数据库呢?
查看更多关于php数据库连接类 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29483