mysql 数据库操作 DB类

如果您加了新功能,或者是有改进,请与大家一起分享。

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

下载: db.php
  1. <?php
  2. /*
  3. *    mysql数据库 DB类
  4. *   @package    db
  5. *   @author        yytcpt(无影)
  6. *   @version    2008-03-27
  7. *   @copyrigth    http://www.d5s.cn/ 
  8. */
  9. class db {
  10.     var $connection_id = "";
  11.     var $pconnect = 0;
  12.     var $shutdown_queries = array();
  13.     var $queries = array();
  14.     var $query_id = "";
  15.     var $query_count = 0;
  16.     var $record_row = array();
  17.     var $failed = 0;
  18.     var $halt = "";
  19.     var $query_log = array();
  20.     function connect($db_config){
  21.         if ($this->pconnect){
  22.             $this->connection_id = mysql_pconnect($db_config["hostname"], $db_config["username"], $db_config["password"]);
  23.         }else{
  24.             $this->connection_id = mysql_connect($db_config["hostname"], $db_config["username"], $db_config["password"]);
  25.         }
  26.         if ( ! $this->connection_id ){
  27.             $this->halt("Can not connect MySQL Server");
  28.         }
  29.         if ( ! @mysql_select_db($db_config["database"], $this->connection_id) ){
  30.             $this->halt("Can not connect MySQL Database");
  31.         }
  32.         if ($db_config["charset"]) {
  33.             @mysql_unbuffered_query("SET NAMES '".$db_config["charset"]."'");
  34.         }
  35.         return true;
  36.     }
  37.     //发送SQL 查询,并返回结果集
  38.     function query($query_id, $query_type='mysql_query'){
  39.         $this->query_id = $query_type($query_id, $this->connection_id);
  40.         $this->queries[] = $query_id;
  41.         if (! $this->query_id ) {
  42.             $this->halt("查询失败:\n$query_id");
  43.         }
  44.         $this->query_count++;
  45.         $this->query_log[] = $str;
  46.         return $this->query_id;
  47.     }
  48.     //发送SQL 查询,并不获取和缓存结果的行
  49.     function query_unbuffered($sql=""){
  50.         return $this->query($sql, 'mysql_unbuffered_query');
  51.     }
  52.     //从结果集中取得一行作为关联数组
  53.     function fetch_array($sql = ""){
  54.         if ($sql == "") $sql = $this->query_id;
  55.         $this->record_row = @mysql_fetch_array($sql, MYSQL_ASSOC);
  56.         return $this->record_row;
  57.     }
  58.     function shutdown_query($query_id = ""){
  59.         $this->shutdown_queries[] = $query_id;
  60.     }
  61.     //取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE
  62.     function affected_rows() {
  63.         return @mysql_affected_rows($this->connection_id);
  64.     }
  65.     //取得结果集中行的数目,仅对 SELECT 语句有效
  66.     function num_rows($query_id="") {
  67.         if ($query_id == "") $query_id = $this->query_id;
  68.         return @mysql_num_rows($query_id);
  69.     }
  70.     //返回上一个 MySQL 操作中的错误信息的数字编码
  71.     function get_errno(){
  72.         $this->errno = @mysql_errno($this->connection_id);
  73.         return $this->errno;
  74.     }
  75.     //取得上一步 INSERT 操作产生的 ID
  76.     function insert_id(){
  77.         return @mysql_insert_id($this->connection_id);
  78.     }
  79.     //得到查询次数
  80.     function query_count() {
  81.         return $this->query_count;
  82.     }
  83.     //释放结果内存
  84.     function free_result($query_id=""){
  85.            if ($query_id == "") $query_id = $this->query_id;
  86.         @mysql_free_result($query_id);
  87.     }
  88.     //关闭 MySQL 连接
  89.     function close_db(){
  90.         if ( $this->connection_id ) return @mysql_close( $this->connection_id );
  91.     }
  92.     //列出 MySQL 数据库中的表
  93.     function get_table_names(){
  94.         global $db_config;
  95.         $result = mysql_list_tables($db_config["database"]);
  96.         $num_tables = @mysql_numrows($result);
  97.         for ($i = 0; $i < $num_tables; $i++) {
  98.             $tables[] = mysql_tablename($result, $i);
  99.         }
  100.         mysql_free_result($result);
  101.         return $tables;
  102.        }
  103.     //从结果集中取得列信息并作为对象返回,取得所有字段
  104.     function get_result_fields($query_id=""){
  105.            if ($query_id == "") $query_id = $this->query_id;
  106.         while ($field = mysql_fetch_field($query_id)) {
  107.             $fields[] = $field;
  108.         }
  109.         return $fields;
  110.        }
  111.     //错误提示
  112.     function halt($the_error=""){
  113.         $message = $the_error."<br/>\r\n";
  114.         $message.= $this->get_errno() . "<br/>\r\n";
  115.         $sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")";
  116.         @mysql_unbuffered_query($sql);
  117.         if (DEBUG==true){
  118.             echo "<html><head><title>MySQL 数据库错误</title>";
  119.             echo "<style type=\"text/css\"><!--.error { font: 11px tahoma, verdana, arial, sans-serif, simsun; }--></style></head>\r\n";
  120.             echo "<body>\r\n";
  121.             echo "<blockquote>\r\n";
  122.             echo "<textarea class=\"error\" rows=\"15\" cols=\"100\" wrap=\"on\" >" . htmlspecialchars($message) . "</textarea>\r\n";
  123.             echo "</blockquote>\r\n</body></html>";
  124.             exit;
  125.         }
  126.     }
  127.     function __destruct(){
  128.         $this->shutdown_queries = array();
  129.         $this->close_db();
  130.     }
  131.     function sql_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
  132.         $sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:"");
  133.         return $sql;
  134.     }
  135.     function sql_insert($tbname, $row){
  136.         foreach ($row as $key=>$value) {
  137.             $sqlfield .= $key.",";
  138.             $sqlvalue .= "'".$value."',";
  139.         }
  140.         return "INSERT INTO `".$tbname."`(".substr($sqlfield, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")";
  141.     }
  142.     function sql_update($tbname, $row, $where){
  143.         foreach ($row as $key=>$value) {
  144.             $sqlud .= $key."= '".$value."',";
  145.         }
  146.         return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -1)." WHERE ".$where;
  147.     }
  148.     function sql_delete($tbname, $where){
  149.         return "DELETE FROM `".$tbname."` WHERE ".$where;
  150.     }
  151.     //新增加一条记录
  152.     function row_insert($tbname, $row){
  153.         $sql = $this->sql_insert($tbname, $row);
  154.         return $this->query_unbuffered($sql);
  155.     }
  156.     //更新指定记录
  157.     function row_update($tbname, $row, $where){
  158.         $sql = $this->sql_update($tbname, $row, $where);
  159.         return $this->query_unbuffered($sql);
  160.     }
  161.     //删除满足条件的记录
  162.     function row_delete($tbname, $where){
  163.         $sql = $this->sql_delete($tbname, $where);
  164.         return $this->query_unbuffered($sql);
  165.     }
  166.     /*    根据条件查询,返回所有记录
  167.      *    $tbname 表名, $where 查询条件, $limit 返回记录, $fields 返回字段
  168.      */
  169.     function row_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
  170.         $sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort);
  171.         return $this->row_query($sql);
  172.     }
  173.     //详细显示一条记录
  174.     function row_select_one($tbname, $where, $fields="*", $orderby="id"){
  175.         $sql = $this->sql_select($tbname, $where, 1, $fields, $orderby);
  176.         return $this->row_query_one($sql);
  177.     }
  178.     function row_query($sql){
  179.         $rs     = $this->query($sql);
  180.         $rs_num = $this->num_rows($rs);
  181.         $rows = array();
  182.         for($i=0; $i<$rs_num; $i++){
  183.             $rows[] = $this->fetch_array($rs);
  184.         }
  185.         $this->free_result($rs);
  186.         return $rows;
  187.     }
  188.     function row_query_one($sql){
  189.         $rs     = $this->query($sql);
  190.         $row = $this->fetch_array($rs);
  191.         $this->free_result($rs);
  192.         return $row;
  193.     }
  194.     //计数统计
  195.     function row_count($tbname, $where=""){
  196.         $sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:"");
  197.         $row = $this->row_query_one($sql);
  198.         return $row["row_sum"];
  199.     }
  200. }
  201. ?>
此条目发表在 程序 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

mysql 数据库操作 DB类》有 1 条评论

  1. hoogl 说:

    $sql = “select id from news”;
    $rr = $db->row_query($sql);
    $nums = $db->num_rows();

    为什么取不到总数?

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>