• UCHome: 数据库类class_mysql.php


    UCHome针对MySQL数据库实现了一个封装类,没有使用ADODB或者PEAR这样的开源数据库框架,这样做的好处是文件非常少,空间非常小。

    1. 数据库配置
    和很多的PHP项目一样,UCHome的数据库配置放在了配置文件config.php中,从第9行到16行:

    $_SC['dbhost']          = 'localhost'; //督????
    $_SC['dbuser']          = 'root';
    $_SC['dbpw']              = ''; 
    $_SC['dbcharset']         = 'utf8'; 
    $_SC['pconnect']         = 0; 
    $_SC['dbname']          = 'comsenz'; 
    $_SC['tablepre']         = 'uchome_'; 
    $_SC['charset']         = 'utf-8'; config.php的内容由安装程序写入,写入后由common.php引入,引入后的内容存放在全局变量$_SC中

    2. 数据库连接
    在common.php的第42行,有这样一个函数调用:
    dbconnect();函数dbconnect()的作用就是执行数据库连接处理,其定义在function_common.php(该文件由common.php引入)的第108行到118行:

    function dbconnect() {
        global $_SGLOBAL, $_SC;
    
        include_once(S_ROOT.'./source/class_mysql.php');
    
        if(empty($_SGLOBAL['db'])) {
            $_SGLOBAL['db'] = new dbstuff;
            $_SGLOBAL['db']->charset = $_SC['dbcharset'];
            $_SGLOBAL['db']->connect($_SC['dbhost'], $_SC['dbuser'], $_SC['dbpw'], $_SC['dbname'], $_SC['pconnect']);
        }
    }

    source/class_mysql.php是UCHome的MySQL封装类,从上面的函数定义可以看到,MySQL的封装类类名是dbstuff,dbconnect()函数创建了该类的一个实例,然后设置字符编码和执行连接,类实例放在了$_SGLOBAL['db']。


    3. 表明前缀
    很多的PHP项目都可以配置表明前缀,这样做的目的是可以在一个数据库里面实现同一个程序的多次安装,UCHome也可以。UCHome的表明前缀是通过$_SC['tablepre']配置的,默认值为uchome_。执行SQL查询时,通过调用函数tname()来增加前缀。
    函数tname()的定义在function_common.php的第216行到219行:

    function tname($name) {
        global $_SC;
        return $_SC['tablepre'].$name;
    }

    具体用法:

    $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('magicinlog');

    4. 数据库查询
    一个数据库查询的例子:

    $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('magicinlog');
    while ($value = $_SGLOBAL['db']->fetch_array($query)) {
        $list[] = $value;
    }
  • 相关阅读:
    C语言之指针基础概念
    Android之常用功能代码
    Android之ImageButton控件基础操作
    BZOJ1079或洛谷2476 [SCOI2008]着色方案
    HDOJ2870 Largest Submatrix
    BZOJ1855或洛谷2569 [SCOI2010]股票交易
    BZOJ1233 [Usaco2009Open]干草堆tower
    HDOJ4261 Estimation
    POJ3254或洛谷1879 Corn Fields
    POJ1037 A Decorative Fence
  • 原文地址:https://www.cnblogs.com/eastson/p/2837887.html
Copyright © 2020-2023  润新知