ecshop的数据库getRow、getAll、getOne区别
ECShop没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现。这样做的好处是实现非常轻量,大大减小了分发包的文件大小。另外,当网站需要做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,文件内容如下:
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_mysql.php的最后:
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);
}
获取单行记录
getRow方法用来从数据库中获取满足条件的单行记录,或者说是第一条记录。getRowCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
将下面的代码加到test_mysql.php的最后:
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);
}
获取某栏位的所有值
getCol方法用来从数据库中获取满足条件的某个栏位的所有值。getColCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
将下面的代码加到test_mysql.php的最后:
test_getCol(); function test_getCol()
{
global $db; $sql = "SELECT email FROM ecs_admin_user";
$result = $db->getCol($sql);
print_r($result);
}
获取单个值
getOne方法用来从数据库中获取满足条件的单个值。getOneCached是它的缓存版本,cache key是该方法的第二个参数,如果缓存有效,直接返回缓存结果,否则重新执行数据库查询。
将下面的代码加到test_mysql.php的最后:
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);
}
执行数据库查询
query方法用来执行数据库查询,例如INSERT,UPDATE,DELETE等。
将下面的代码加到test_mysql.php的最后:
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);
}
数据库表操作
autoExecute方法用来简化对数据表的INSERT和UPDATE。
将下面的代码加到test_mysql.php的最后:
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);
}
$db->getAll($sql) 返回查询数据表中所有结果,形式是一个二维关联数组。如果把结果赋值给smarty非常方便通过循环在模板里面引用。
$db->getOne($sql) 返回查询的第一个字段
比如:
$sql ="select count(*) from ecs_goods ";
$count = $db->getOne($sql);
$count 为 商品数据总个数
$db->getRow($sql) 则返回数据库中一行数据 比如
$sql = "select * from ecs_goods ";
$row = $db->getRow($sql);
则$row 为一个一维的关联数组 可以通过$row['goods_name'] 取得商品名称 等等。。。
其实这里的结果
$row_all = $db->getAll($sql) ;
$row = $db->getRow($sql);
$row 其实等于 $row_all[0] 当然你可以通过循环 取得 其他的值 比如 $row_all[1] ...
$db->getOne 一行一个字段
$db->getRow 一行记录
$db->getAll 全部记录
转:https://www.cnblogs.com/shangxia/p/3410418.html
ecshop的数据库getRow、getAll、getOne区别的更多相关文章
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- [转]MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
原创链接:https://www.cnblogs.com/lxf1117/p/6762315.html sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户 ...
- MySQL数据库各个版本的区别
MySQL数据库各个版本的区别 MySQL数据库 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管 ...
- 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别
什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它出于分析性报告和决策支持目的而创建. ...
- Ecshop 数据库操作方法getRow、getAll、getOne区别
ECShop没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,大大减小了分发包的文件大小.另外,当网站需要做memcached缓存时,也可以 ...
- ecshop操作数据库类
ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小.另外,当网站 ...
- MySQL数据库引擎介绍、区别
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...
- Oracle数据库各种名字的区别
数据库名(DB_NAME).数据库实例名(INSTANCE_NAME).操作系统环境变量(ORACLE_SID).数据库服务名(SERVICE_NAME).数据库域名(DB_DOMAIN)以及全局数据 ...
随机推荐
- 前端必备工具-IETest
浏览器兼容性可以检查IE5.5到10 ,一直还用IE6来测试,因为觉得这样错误显示更真实,但是现在不换也不行,很多网页都已经不支持ie6了,实在受不了,果断升级,而且这个也是升级了才能用的,既然很多前 ...
- GO语言 -- 调用DLL函数,填平所有的坑,最详尽攻略
编译dll文件(源代码c++):g++ -shared main.cpp -o test.dll set GOARCH=386 第一个DLL函数,第一个参数,要求传入一个指针,直接指向[]byte类型 ...
- matlab 图像常用函数
Canny function [ canny ] = canny( rgb ) temp=rgb2gray(rgb); canny=edge(temp,'canny'); end 灰度 temp=rg ...
- c++ 哈希表(hash表)
一.定义 Hash表,也称散列表.一般应用于有大量"动态"的插入(删除)和查找操作的一类问题.(如果是"静态"的,通常可以先对数据排序,查找时就可以用" ...
- ThreadLocal实现session中用户信息 的线程间共享
转载自:http://blog.sina.com.cn/s/blog_4b5bc01101013gok.html ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像 ...
- 【PAT】1024. Palindromic Number (25)
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- DG日志不应用,GAP,主备切换解决思路与办法
环境ORACLE 10G OS WINDOWS 对于DG故障解决思路,DG日志切换不进行应用,DG出现GAP解决方法,DG主备库切换, 当DG出现故障时,第一时间检测alert日志,服务器OS日志,网 ...
- 美团的android多渠道包的3种方法
转: http://tech.meituan.com/mt-apk-packaging.html 美团Android自动化之旅—生成渠道包 zhihu2014-06-13 10:06 概述 每当发新版 ...
- [ES6] 03. The let keyword -- 1
var message = "Hi"; { var message = "Bye"; } console.log(message); //Bye The mes ...
- Discuz常见小问题-如何删除用户
用户-用户管理,直接拉到底部点搜索 切换到最后一页,然后勾选要删除的用户(最后一页就是最新注册的用户) 要勾选两个选项,删除过程比较长,不要中途退出,等待删除完毕 再次搜索用户就少一个了