支持php4、php5的mysql数据库操作类

5年以前  |  阅读数:937 次  |  编程语言:PHP 

前端一直使用PHP5,的确使用起来特别的爽,现在为了能在俺的虚拟主机上跑,不得不改成PHP4的。这几个库类我以前发在PHPCHIAN,地址是http://www.phpchina.com/bbs/viewthread.php?tid=5687&highlight;=。(前几天在网上搜索了下,发现很多转载我的这几篇文章都没有说明出处,而且把我的版权都删除了,气晕了。)

昨天改写了数据库操作类,恰好在我简化zend Framework也能用到。   

代码如下:   

<?php
/**

  • filename: DB_Mysql.class.php

  • @package:phpbean

  • @author :feifengxlq<[email]feifengxlq@gmail.com[/email]>

  • @copyright :Copyright 2006 feifengxlq

  • @license:version 1.2

  • create:2006-5-30

  • modify:2006-10-19 by feifengxlq

  • description:the interface of mysql.

  • example:

  • ////////////Select action (First mode)//////////////////////////////
    $mysql=new DB_Mysql("localhost","root","root","root");
    $rs=$mysql->query("select * from test");
    for($i=0;$i<$mysql->num_rows($rs);$i++)
    $record[$i]=$mysql->seek($i);
    print_r($record);
    $mysql->close();

  • ////////////Select action (Second mode)//////////////////////////////
    $mysql=new DB_Mysql("localhost","root","root","root");
    $rs=$mysql->execute("select * from test");
    print_r($rs);
    $mysql->close();

  • /////////////insert action////////////////////////////
    $mysql=new DB_Mysql("localhost","root","root","root");
    $mysql->query("insert into test(username) values('test from my DB_mysql')");
    printf("%s",$mysql->insert_id());
    $mysql->close();
    */
    class mysql{

    / private: connection parameters /
    var $host="localhost";
    var $database="";
    var $user="root";
    var $password="";

    / private: configuration parameters /
    var $pconnect=false;
    var $debug=false;

    / private: result array and current row number /
    var $link_id=0;
    var $query_id=0;
    var $record=array();

    /**

    • construct
    • @param string $host
    • @param string $user
    • @param string $password
    • @param string $database
      */
      function __construct($host="localhost",$user="root",$password="",$database="")
      {
      $this->set("host",$host);
      $this->set("user",$user);
      $this->set("password",$password);
      $this->set("database",$database);
      $this->connect();
      }

    /**

    • set the value for the param of this class
    • @param string $var
    • @param string $value
      */
      function set($var,$value)
      {
      $this->$var=$value;
      }

    /**

    • connect to a mysql server,and choose the database.
    • @param string $database
    • @param string $host
    • @param string $user
    • @param string $password
    • @return link_id
      */
      function connect($database="",$host="",$user="",$password="")
      {
      if(!empty($database))$this->set("database",$database);
      if(!empty($host))$this->set("host",$host);
      if(!empty($user))$this->set("user",$user);
      if(!empty($password))$this->set("password",$password);
      if($this->link_id==0)
      {
      if($this->pconnect)
      $this->link_id=@mysql_pconnect($this->host,$this->user,$this->password);
      else
      $this->link_id=@mysql_connect($this->host,$this->user,$this->password);
      if(!$this->link_id)
      die("Mysql Connect Error in ".FUNCTION."():".mysql_errno().":".mysql_error());
      if(!@mysql_select_db($this->database,$this->link_id))
      die("Mysql Select database Error in ".FUNCTION."():".mysql_errno().":".mysql_error());
      }
      return $this->link_id;
      }

    /**

    • query a sql into the database
    • @param string $strsql
    • @return query_id
      */
      function query($strsql="")
      {
      if(empty($strsql)) die("Mysql Error:".FUNCTION."() strsql is empty!");
      if($this->link_id==0) $this->connect();
      if($this->debug) printf("Debug query sql:%s",$strsql);
      $this->query_id=@mysql_query($strsql,$this->link_id);
      if(!$this->query_id) die("Mysql query fail,Invalid sql:".$strsql.".");
      return $this->query_id;
      }

    /**

    • query a sql into the database,while it is differernt from the query() method,
    • this method will return a record(array);
    • @param string $strsql
    • @param string $style
    • @return $record is a array()
      */
      function Execute($strsql,$style="array")
      {
      $this->query($strsql);
      if(!empty($this->record))$this->record=array();
      $i=0;
      if($style=="array"){
      while ($temp=@mysql_fetch_array($this->query_id)) {
      $this->record[$i]=$temp;
      $i++;
      }
      }else{
      while ($temp=@mysql_fetch_object($this->query_id)) {
      $this->record[$i]=$temp;
      $i++;
      }
      }
      unset($i);
      unset($temp);
      return $this->record;
      }

    /**

    • seek,but not equal to mysql_data_seek. this methord will return a list.
    • @param int $pos
    • @param string $style
    • @return record
      */
      function seek($pos=0,$style="array")
      {
      if(!@mysql_data_seek($this->query_id,$pos))
      die("Error in".FUNCTION."():can not seek to row ".$pos."!");
      $result=@($style=="array")?mysql_fetch_array($this->query_id):mysql_fetch_object($this->query_id);
      if(!$result) die("Error in ".FUNCTION."():can not fetch data!");
      return $result;
      }
      /**
    • free the result of query
    • */
      function free()
      {
      if(($this->query_id)&($this->query_id!=0))@mysql_free_result($this->query_id);
      }

    /**

    • evaluate the result (size, width)
    • @return num
      */
      function affected_rows()
      {
      return @mysql_affected_rows($this->link_id);
      }

    function num_rows()
    {
    return @mysql_num_rows($this->query_id);
    }

    function num_fields()
    {
    return @mysql_num_fields($this->query_id);
    }

    function insert_id()
    {
    return @mysql_insert_id($this->link_id);
    }

    function close()
    {
    $this->free();
    if($this->link_id!=0)@mysql_close($this->link_id);
    if(mysql_errno()!=0) die("Mysql Error:".mysql_errno().":".mysql_error());
    }

    function select($strsql,$number,$offset)
    {
    if(empty($number)){
    return $this->Execute($strsql);
    }else{
    return $this->Execute($strsql.' limit '.$offset.','.$number);
    }
    }

    function __destruct()
    {
    $this->close();
    $this->set("user","");
    $this->set("host","");
    $this->set("password","");
    $this->set("database","");
    }
    }
    ?>

在此基础上,我顺便封装SIDU(select,insert,update,delete)四种基本操作,作为简化的zend Framework的module。代码如下(这个没写注释了,懒的写。。):

<?
class module{

var $mysql;

var $tbname;

var $debug=false;

function __construct($tbname){
if(!is_string($tbname))die('Module need a args of tablename');
$this->tbname=$tbname;
$this->mysql=phpbean::registry('db');
}

function _setDebug($debug=true){
$this->debug=$debug;
}

function add($row){
if(!is_array($row))die('module error:row should be an array');
$strsql='insert into '.$this->tbname.'';
$keys='';
$values='';
foreach($row as $key=>$value){
$keys.=''.$key.',';
$values.='\''.$value.'\'';
}
$keys=rtrim($keys,',');
$values=rtrim($values,',');
$strsql.=' ('.$keys.') values ('.$values.')';
if($this->debug)echo '


'.$strsql.'
';
$this->mysql->query($strsql);
return $this->mysql->insert_id();
}

function query($strsql){
return $this->mysql->Execute($strsql);
}

function count($where=''){
$strsql='select count(*) as num from '.$this->tbname.' ';
if(!empty($where))$strsql.=$where;
$rs=$this->mysql->Execute($strsql);
return $rs[0]['num'];
}

function select($where=''){
$strsql='select * from '.$this->tbname.' ';
if(!empty($where))$strsql.=$where;
return $this->mysql->Execute($strsql);
}

function delete($where=''){
if(empty($where))die('Error:the delete method need a condition!');
return $this->mysql->query('delete from '.$this->tbname.' '.$where);
}

function update($set,$where){
if(empty($where))die('Error:the update method need a condition!');
if(!is_array($set))die('Error:Set must be an array!');
$strsql='update '.$this->tbname.' ';
//get a string of set
$strsql.='set ';
foreach($set as $key=>$value){
$strsql.=''.$key.'=\''.$value.'\',';
}
$strsql=rtrim($strsql,',');
return $this->mysql->query($strsql.' '.$where);
}

function detail($where){
if(empty($where))die('Error:where should not empty!');
$rs=$this->mysql->query('select * from '.$this->tbname.' '.$where);
return $this->mysql->seek(0);
}
}
?>

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例