首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > PHP教程 > 正文
Google
mysql数据库操作——DB类
来源:蓝色理想 作者:yytcpt 2008年04月14日 08:31 网友评论:0条 点击:

<?php
/*
 * mysql数据库 DB类
 * @package db
 * @author  yytcpt(无影)
 * @version 2008-03-27
 * @copyrigth http://www.d5s.cn/
 */
class db {
 var $connection_id = "";
 var $pconnect = 0;
 var $shutdown_queries = array();
 var $queries = array();
 var $query_id = "";
 var $query_count = 0;
 var $record_row = array();
 var $failed = 0;
 var $halt = "";
 var $query_log = array();
 function connect($db_config){
  if ($this->pconnect){
   $this->connection_id = mysql_pconnect($db_config["hostname"], $db_config["username"], $db_config["password"]);
  }else{
   $this->connection_id = mysql_connect($db_config["hostname"], $db_config["username"], $db_config["password"]);
  }
  if ( ! $this->connection_id ){
   $this->halt("Can not connect MySQL Server");
  }
  if ( ! @mysql_select_db($db_config["database"], $this->connection_id) ){
   $this->halt("Can not connect MySQL Database");
  }
  if ($db_config["charset"]) {
   @mysql_unbuffered_query("SET NAMES '".$db_config["charset"]."'");
  }
  return true;
 }
 //发送SQL 查询,并返回结果集
    function query($query_id, $query_type='mysql_query'){
        $this->query_id = $query_type($query_id, $this->connection_id);
  $this->queries[] = $query_id;
        if (! $this->query_id ) {
            $this->halt("查询失败:\n$query_id");
  }
  $this->query_count++;
  $this->query_log[] = $str;
        return $this->query_id;
    }
 //发送SQL 查询,并不获取和缓存结果的行
 function query_unbuffered($sql=""){
  return $this->query($sql, 'mysql_unbuffered_query');
 }
 //从结果集中取得一行作为关联数组
    function fetch_array($sql = ""){
     if ($sql == "") $sql = $this->query_id;
        $this->record_row = @mysql_fetch_array($sql, MYSQL_ASSOC);
        return $this->record_row;
    }
 function shutdown_query($query_id = ""){
  $this->shutdown_queries[] = $query_id;
    }
 //取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE
 function affected_rows() {
        return @mysql_affected_rows($this->connection_id);
    }
 //取得结果集中行的数目,仅对 SELECT 语句有效
    function num_rows($query_id="") {
  if ($query_id == "") $query_id = $this->query_id;
        return @mysql_num_rows($query_id);
    }
 //返回上一个 MySQL 操作中的错误信息的数字编码
 function get_errno(){
  $this->errno = @mysql_errno($this->connection_id);
  return $this->errno;
 }
 //取得上一步 INSERT 操作产生的 ID
    function insert_id(){
        return @mysql_insert_id($this->connection_id);
    }
 //得到查询次数
    function query_count() {
        return $this->query_count;
    }
 //释放结果内存
    function free_result($query_id=""){
     if ($query_id == "") $query_id = $this->query_id;
     @mysql_free_result($query_id);
    }
 //关闭 MySQL 连接
    function close_db(){
     if ( $this->connection_id ) return @mysql_close( $this->connection_id );
    }
 //列出 MySQL 数据库中的表
    function get_table_names(){
     global $db_config;
  $result = mysql_list_tables($db_config["database"]);
  $num_tables = @mysql_numrows($result);
  for ($i = 0; $i < $num_tables; $i++) {
   $tables[] = mysql_tablename($result, $i);
  }
  mysql_free_result($result);
  return $tables;
    }
 //从结果集中取得列信息并作为对象返回,取得所有字段
    function get_result_fields($query_id=""){
     if ($query_id == "") $query_id = $this->query_id;
  while ($field = mysql_fetch_field($query_id)) {
            $fields[] = $field;
  }
  return $fields;
    }
 //错误提示
    function halt($the_error=""){
  $message = $the_error."<br/>\r\n";
  $message.= $this->get_errno() . "<br/>\r\n";
  $sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")";
  @mysql_unbuffered_query($sql);
  if (DEBUG==true){
   echo "<html><head><title>MySQL 数据库错误</title>";
   echo "<style type=\"text/css\"><!--.error { font: 11px tahoma, verdana, arial, sans-serif, simsun; }--></style></head>\r\n";
   echo "<body>\r\n";
   echo "<blockquote>\r\n";
   echo "<textarea class=\"error\" rows=\"15\" cols=\"100\" wrap=\"on\" >" . htmlspecialchars($message) . "</textarea>\r\n";
   echo "</blockquote>\r\n</body></html>";
   exit;
  }
    }
 function __destruct(){
  $this->shutdown_queries = array();
  $this->close_db();
 }
 function sql_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
  $sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:"");
  return $sql;
 }
 function sql_insert($tbname, $row){
  foreach ($row as $key=>$value) {
   $sqlfield .= $key.",";
   $sqlvalue .= "'".$value."',";
  }
  return "INSERT INTO `".$tbname."`(".substr($sqlfield, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")";
 }
 function sql_update($tbname, $row, $where){
  foreach ($row as $key=>$value) {
   $sqlud .= $key."= '".$value."',";
  }
  return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -1)." WHERE ".$where;
 }
 function sql_delete($tbname, $where){
  return "DELETE FROM `".$tbname."` WHERE ".$where;
 }
 //新增加一条记录
 function row_insert($tbname, $row){
  $sql = $this->sql_insert($tbname, $row);
  return $this->query_unbuffered($sql);
 }
 //更新指定记录
 function row_update($tbname, $row, $where){
  $sql = $this->sql_update($tbname, $row, $where);
  return $this->query_unbuffered($sql);
 }
 //删除满足条件的记录
 function row_delete($tbname, $where){
  $sql = $this->sql_delete($tbname, $where);
  return $this->query_unbuffered($sql);
 }
 /* 根据条件查询,返回所有记录
  * $tbname 表名, $where 查询条件, $limit 返回记录, $fields 返回字段
  */
 function row_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
  $sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort);
  return $this->row_query($sql);
 }
 //详细显示一条记录
 function row_select_one($tbname, $where, $fields="*", $orderby="id"){
  $sql = $this->sql_select($tbname, $where, 1, $fields, $orderby);
  return $this->row_query_one($sql);
 }
 function row_query($sql){
  $rs  = $this->query($sql);
  $rs_num = $this->num_rows($rs);
  $rows = array();
  for($i=0; $i<$rs_num; $i++){
   $rows[] = $this->fetch_array($rs);
  }
  $this->free_result($rs);
  return $rows;
 }
 function row_query_one($sql){
  $rs  = $this->query($sql);
  $row = $this->fetch_array($rs);
  $this->free_result($rs);
  return $row;
 }
 //计数统计
 function row_count($tbname, $where=""){
  $sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:"");
  $row = $this->row_query_one($sql);
  return $row["row_sum"];
 }
}
?>

很久没有发帖了,把我常用的一些php类文件分享出来。
如果您加了新功能,或者是有改进,请与大家一起分享。

<?php
    $db_config["hostname"]    = "127.0.0.1";    //服务器地址
    $db_config["username"]    = "root";        //数据库用户名
    $db_config["password"]    = "root";        //数据库密码
    $db_config["database"]    = "wap_blueidea_com";        //数据库名称
    $db_config["charset"]        = "utf8";
    include('db.php');
    $db    = new db();
    $db->connect($db_config);
    //例:查询表 table_name 中 cid=1的所有记录。
    $row = $db->row_select('table_name', 'cid=1');
?>

更详细的使用方法,请参考 db类文件中的注释。

上一篇:php设计模式介绍之导言   下一篇:PHP使用zlib扩展实现页面GZIP压缩输出
收藏此页】【打印】【关闭
 相关文章  我要点评
·解决Oracle数据库返回cursor问题
·Oracle数据库中sys和system两个用户的区别
·解决无法打开用户默认数据库的方法
·修改Sybase数据库sa密码的方法
·Oracle数据库SQLPLUS中几个常用set语句
·Oracle数据库冷备份恢复的具体步骤
·在SQL Server数据库中导入导出数据
·MySQL数据库只监听某个特定地址的方法

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】