ecshop操作数据库类
ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现。这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小。另外,当网站需要做memcached缓存时,也可以很方便的实现。当然,这样做的后果就是数据库的选择非常狭窄,无法实现其它的非MySQL数据库。
ECShop的数据操作类文件是includes/cls_mysql.php,类名是cls_mysql。该类主要提供了下面 一些比较有用的方法:
- getAll($sql)和getAllCached($sql, $cached = 'FILEFIRST'):获取所有记录。
- getRow($sql, $limited = false)和getRowCached($sql, $cached = 'FILEFIRST'):获取单行记录。
- getCol($sqlse)和getColCached($sql, $cached = 'FILEFIRST'):获取某栏位的所有值。
- getOne($sql, $limited = false)和getOneCached($sql, $cached = 'FILEFIRST'):获取单个数值。
- query($sql):执行数据库查询。
- autoExecute($table, $field_values, $mode = 'INSERT', $where = ''):数据库表操作。
现在我们以实例的方式来说明这些方法如何使用。首先,在ecshop/admin目录下新增文件test_mysql.php,文件内容如下:
- <?php
- define('IN_ECS', true);
- define('EC_CHARSET', 'utf-8');
- define('ROOT_PATH', 'D:/Program Files/Zend/Apache2/htdocs/ecshop/');
- define('DATA_DIR', 'data');
- $db_host = "localhost:3306";
- $db_name = "ecshop";
- $db_user = "root";
- $db_pass = "";
- require('../includes/cls_mysql.php');
- $db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
获取所有记录
getAll方法用来从数据库中获取满足条件的所有记录。getAllCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
- test_getAll();
- function test_getAll()
- {
- global $db;
- $sql = "SELECT user_id, user_name, email FROM ecs_admin_user";
- $result = $db->getAll($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
- Array
- (
- [0] => Array
- (
- [user_id] => 1
- [user_name] => admin
- [email] => admin@admin.com
- )
- [1] => Array
- (
- [user_id] => 2
- [user_name] => bjgonghuo1
- [email] => bj@163.com
- )
- [2] => Array
- (
- [user_id] => 3
- [user_name] => shhaigonghuo1
- [email] => shanghai@163.com
- )
- [3] => Array
- (
- [user_id] => 4
- [user_name] => amonest
- [email] => amonest@foxmail.com
- )
- )
获取单行记录
- test_getRow();
- function test_getRow()
- {
- global $db;
- $sql = "SELECT user_id, user_name, email FROM ecs_admin_user LIMIT 1";
- $result = $db->getRow($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
- Array
- (
- [user_id] => 1
- [user_name] => admin
- [email] => admin@admin.com
- )
获取某栏位的所有值
getCol方法用来从数据库中获取满足条件的某个栏位的所有值。getColCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
- test_getCol();
- function test_getCol()
- {
- global $db;
- $sql = "SELECT email FROM ecs_admin_user";
- $result = $db->getCol($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
- Array
- (
- [0] => admin@admin.com
- [1] => bj@163.com
- [2] => shanghai@163.com
- [3] => amonest@foxmail.com
- )
获取单个值
getOne方法用来从数据库中获取满足条件的单个值。getOneCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
- test_getOne();
- function test_getOne()
- {
- global $db;
- $sql = "SELECT email FROM ecs_admin_user WHERE user_id = 4";
- $result = $db->getOne($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
执行数据库查询
query方法用来执行数据库查询,例如INSERT,UPDATE,DELETE等。
- test_query();
- function test_query()
- {
- global $db;
- $sql = "UPDATE ecs_admin_user SET todolist = '你有一封新邮件!' WHERE user_id = 4";
- $db->query($sql);
- $sql = "SELECT todolist FROM ecs_admin_user WHERE user_id = 4";
- $result = $db->getOne($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
数据库表操作
autoExecute方法用来简化对数据表的INSERT和UPDATE。
- test_autoExecute();
- function test_autoExecute()
- {
- global $db;
- $table = "ecs_role";
- $field_values = array("role_name" => "总经理办", "role_describe" => "总经理办", "action_list" => "all");
- $db->autoExecute($table, $field_values, "INSERT");
- // 执行的SQL:INSERT INTO ecs_role (role_name, action_list, role_describe) VALUES ('总经理办', 'all', '总经理办')
- $role_id = $db->insert_id(); // 新记录的ID:5
- $field_values = array("action_list" => "goods_manage");
- $db->autoExecute($table, $field_values, "UPDATE", "role_id = $role_id");
- // 执行的SQL:UPDATE ecs_role SET action_list = 'goods_manage' WHERE role_id = 5
- $sql = "SELECT action_list FROM ecs_role WHERE role_id = $role_id";
- $result = $db->getOne($sql);
- print_r($result);
- }
修改以后的test_mysql.php执行结果如下:
- goods_manage
ecshop操作数据库类相关推荐
- mysql 数据库操作类_【数据库操作类】10个php操作数据库类下载
数据库(Database)操作是在开发过程中重要的组成部分,熟练掌握数据库的操作是开发人员必备的武器.PHP中文网为大家提供了各种封装好的php数据库操作类库,供大家下载和学习. 相关mysql视频教 ...
- java实现使用JDBC-ODBC桥操作数据库。
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现使用JDBC-ODBC桥操作数据库.jdk1.8后不再使用,所以要使用换回1.7或加载1.7的包 测试代码 public static ...
- SQLserver数据库操作帮助类SqlHelper
1 SqlHelper源码 using System; using System.Data; using System.Xml; using System.Data.SqlClient; using ...
- SQL DBHelp.cs 操作数据库的底层类
/// <summary> /// 操作数据库存储过程类 /// </summary> public class ExecProc { //取出数据库连接字符串 //publi ...
- 黄聪:使用Wordpress中的wpdb类操作数据库
WordPress包含一个操作数据库的类--wpdb,该类基于ezSQL(由Justin Vincent维护的数据库操作项目)编写,包含了其基本的功能. 使用说明 请不要直接调用wpdb类中的方法.W ...
- thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)
为了方便操作Mysql数据库, 封装类似thinkphp连贯操作数据库的Db类<?php header("Content-Type:text/html;charset=utf-8&qu ...
- 使用ADO操作数据库时一个好用的VARIANT类!
inline CString VTOCSTR(VARIANT *v) { if(v->vt==VT_BSTR) { CString str((LPCWSTR)v->bstrVal) ...
- sqlite mysql php_PHP实现的简单操作SQLite数据库类与用法示例
本文实例讲述了PHP实现的简单操作SQLite数据库类与用法.分享给大家供大家参考,具体如下: SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已 ...
- php实现分页mssql,PHP操作mssql数据库类,含分页类[分页类原创]
/** * PHP操作mssql数据库类,含分页类 * Enter description here ... * @author aboc 9986584 2011-04-09 * */ class ...
最新文章
- 每天一个python 小案例——if else
- Java访问修饰符public,private,protected,以及不写(默认)时的区别?
- eclipse控制台自动换行不分割单词_这 7 个实用的文档技巧,不掌握就太可惜了...
- CNN结构:MXNet设计和实现简介
- 通过ID查询一个用户的两种开发方法
- 软件定义的数据中心已经来临
- html canvas blob image 污染源
- 2dpca的matlab代码,2DPCA人脸识别的matlab代码
- spark共享变量(广播变量Broadcast Variable,累加器Accumulators)
- 201521123058 软工阅读第二次作业
- doc转换html软件,Doc文件格式转换工具(CoolUtils Total Doc Converter)
- 无锡php公司,start.php
- windows upd广播包无法发送到局域网解决方法
- linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列
- 怎样将excel表格导入天正_怎样把天正里面的表格转换到Excel里面?
- Oracle 中的序列
- 如何用photoshop输出html网页(转)
- 再补充三种内网穿透的方法:ngrok 、ngrok.cc、IOEE
- HDU 2708.Vertical Histogram
- 如何用计算机玩扫雷,扫雷怎么玩_玩好扫雷游戏的技巧是什么【图文】-太平洋电脑网PConline-太平洋电脑网...