Chinaunix首页 | 论坛 | 博客
  • 博客访问: 634352
  • 博文数量: 184
  • 博客积分: 10057
  • 博客等级: 上将
  • 技术积分: 2505
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-31 16:34
文章分类

全部博文(184)

文章存档

2010年(5)

2009年(104)

2008年(75)

我的朋友

分类: Mysql/postgreSQL

2008-11-17 16:39:36

dmysql 一个简单的PHP操作MySQL的类

异常简单的类,也没有进行 sql语句的容错、安全过滤,以及建立数据库之类的操作。希望在提交sql的时候已经做了安全消毒了:)

下面是演示的代码,比如我们插入一条数据

<?php

require_once( "dmysql.php" );

$DB = new DMYSQL( "localhost", "root", "", "address" );

if( $DB->execute( "INSERT INTO `table` VALUE ('','dorainm','dorainm@gmail.com')" )
{
    echo "affected " . $DB->rows_num . " row(s)\n";
}
else
{
    echo $DB->error;
}
?>


如果成功,显示“affected 1 row(s)”,失败则显示错误信息。

同样,删除信息:

<?php

require_once( "dmysql.php" );

$DB = new DMYSQL( "localhost", "root", "", "address" );

if( $DB->execute( "DELETE FROM `table` WHERE `id`<4" )
{
    echo "affected " . $DB->rows_num . " row(s)\n";
}
else
{
    echo $DB->error;
}
?>


如果成功,显示“affected 3 row(s)”,失败则显示错误信息。

下面是查询数据库,比如:

<?php

require_once( "dmysql.php" );

$DB = new DMYSQL( "localhost", "root", "", "address" );

$results = $DB->query( "SELECT * FROM `table`" );
if( $results )
{
    for( $i=0; $i<$DB->rows_num; $i++ )
    {
        for( $j=0; $j<$DB->cols_num; $j++ )
        {
            echo $results[$i][$j] . "\t";
        }
        echo "\n";
    }
}
else
{
    echo $DB->error;
}
?>


这个就是查询结果的例子了~

4 88250 dl88250@gmail.com
5 xiaoq xiaoqcool@gmail.com
6 dorainm dorainm@gmail.com


当然,例子中的二维数组,还可以这么表达,$results[$i]['id'],$results[$i]['user'],$results[$i]['email']
如果失败,就会显示相应的错误信息。

全部功能就这些,很简单但是也挺使用的。
下面是这个类的源代码:

<?php

  
/* DMYSQL
   *
   * dorainm MySQL Operation Class
   * a simple class to operate MySQL database
   *
   *
   * Author: dorainm
   * E-mail: dorainm@gmail.com
   * Date : 2008-11-13
   */

class DMYSQL
{
    
/*
     * int : the fields number of query result by SELECT;
     */

    public $cols_num;
    
/*
     * int : the rows number of query result by SELECT or
     * affected by DELETE, UPDATE,...;
     */

    public $rows_num;
    
/*
     * string : error information if the event appeared;
     */

    public $error;


    
// handle of mysql

    private $dbh;

    
// displays the error message and exit the program

    private function error( $msg )
    {
        header('Content-Type: text/html; charset=utf-8');
?>
<html>
<head>
<title>DMYSQL ERROR</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
     <p>
<h1><?=$msg?>h1></p>
     <p><h2><?=@mysql_error()?></h2></p>
</body>
</html>
<?php
        exit;
    }


    
/*
     * Connects to the Database Server and Selects a Database
     *
     * @param string $_host
     * @param string $_user
     * @param string $_passwd
     * @param string $_database
     * @param string $_charset
     * @return ture or exit;
     */

    function __construct( $_host, $_user, $_passwd, $_database,
             $_charset=null )
    {
        
// connect to database

        $this->dbh = @mysql_connect( $_host, $_user, $_passwd );
        if( !$this->dbh )
        {
            $this->error( "Can not CONNECT Database." );
        }

        
// set charactor

        if( !empty($_charset ) &&
         version_compare(@mysql_get_server_info(), '4.1.0', '>=') )
        {
             $this->execute("SET NAMES '$_charset'");
        }

        
// use database

        if( !@mysql_select_db($_database,$this->dbh) )
        {
            $this->error("Can not USE Database.");
        }

        return true;
    }

    
/*
     * Disconnects the Database and Free all
     */

    function __destructor()
    {
        @mysql_close( $this->dbh );
        return;
    }


    
/*
     * Execute a SQL string
     *
     * @param string $sql
     * @return boolean
     */

    public function execute( $sql )
    {
        if( $retval = @mysql_query( $sql, $this->dbh ) )
        {
            $this->rows_num = @mysql_affected_rows();
            $this->cols_num = 0;
            $this->error = null;
        }
        else
        {
            $this->rows_num = $this->cols_num = 0;
            $this->error = @mysql_error();
        }
        return $retval;
    }

    
/*
     * Query the Database with a SQL string
     *
     * @param string $sql
     * @return false or the two-dimensional array of the result
     */

    public function query( $sql )
    {
        $retval = null;

        $results = @mysql_query( $sql, $this->dbh );
        if( $this->error=@mysql_error() )
        {
            $this->rows_num = $this->cols_num = 0;
            return false;
        }
        
        $count = 0;
        
while( $row = @mysql_fetch_array( $results ) )
        {
            $retval[$count] = $row;
            $count ++;
        }
        $this->rows_num = mysql_num_rows( $results );
        $this->cols_num = @mysql_num_fields( $results );
        @mysql_free_result( $results );

        return $retval;
    }

    
/*
     * Get one Value from the Database with a SQL string
     *
     * @param string $sql
     * @param int $x : the offset value of fields
     * @param int $y : the offset value of rows
     * @return false or the value queryed.
     */

    public function value( $sql, $x=0, $y=0 )
    {
        if( $results=$this->query($sql) )
        {
            return $results[$y][$x];
        }
        else
        {
            return false;            
        };
    }
}

?>

阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~