Ecos 数据库操作
数据库操作类base_db_connections(强烈不建议直接调用)
对于数据库的操作, 建议通过model进行处理,.在model的基类中对于数据库的操作会通过dbschema定义文件对操作的信息进行校验并作相关的转义. 如果有特殊需求无法通过model进行处理, 应用本类时请慎重.
本类不允许直接调用, 调用方式可见base_db_model
数据库集群支持本类支持mysql主从数据库, 一主一从, 主数据库为读写, 从数据库只读.规则 1. 通过exec进行处理的通过主数据库服务器 2. 在一次http请求过程中, 使用用select/selectrow/selectlimit/count函数时, 使用从数据库服务器进行处理. 但一旦使用事务, 系统将通过主数据库服务器处理所有数据, 而不再通过从数据库服务器如果想支持一主多从, 需要在config.php中做一点小处理, 把每一台的从数据库服务器的信息放到一个数组中(包括 DB_SLAVE_HOST, DB_SLAVE_USER, DB_SLAVE_PASSWORD, DB_SLAVE_NAME), 然后从数组中按照一定算法随机取出一条数据, 然后依次进行define.
支持多库,
配置
本类的配置在config/config.php内完成
DB_HOST
主数据库HOST
DB_USER
主数据库用户名
DB_PASSWD
主数据库密码
DB_NAME
主数据库库名
DB_SLAVE_HOST
从数据库HOST
DB_SLAVE_USER
从数据库用户名
DB_SLAVE_PASSWORD
从数据库密码
DB_SLAVE_NAME
从数据库库名
DB_PREFIX
表前缀, 默认为sdb_
DB_CHARSET
数据库编码, 默认为utf8
函数接口
exec
执行sql语句
参数:string $sql 需要执行的sql语句bool $skipModifiedMark 是否跳过对于操作表的缓存更新(不明者请勿修改默认值), 默认为falseresource $db_lnk mysql连接标识, 默认为null. 如果设置为null, 系统会根据config.php的配置连接指定服务器的数据库生成 返回:array|false 如果执行成功返回数组array('$rs', '$sql').$rs表示mysql连接标识, $sql代表经过安全处理的sql语句. 如果失败返回false
代码:$item = $this->app->model('item');$rs = $item->db->exec("select * from sdb_ecbook_item");返回的的$rsArray([rs] => Resource id #62[sql] => select * from sdb_ecbook_item)
query
exec的别名函数
select
对数据库表进行select,执行sql语句(只要是正确的sql语句都能执行);
参数:string $sql 正确的sql语句 返回:array select语句返回数据集, 二维数组. 每行代表一列数据null insert delete update语句 不管错误还是正确都什么都不返回,如果是正确则会执行
代码:$aData = kernel::database()->select('select * from sdb_ecbook_item'); 返回值:Array([0] => Array([item_id] => 0[item_name] => ami[item_subject] => abcde)[1] => Array([item_id] => 1[item_name] => 0642[item_subject] => aaaa))
selectrow
返回单行数据
参数:string $sql sql语句, 不需要包含limit子句 返回:array 返回表单行数据
代码:$item = $this->app->model('item');$aData = $item->db->selectrow("select * from sdb_ecbook_item"); 返回的$aDataArray([item_id] => 0[item_name] => ami[item_subject] => abcde)
selectlimit
与select函数差不多, 区别在于, 用selectlimit不必手拼limit
参数:string $sql select的sql语句 integer $limit 取几条数据, 默认为10. 如果$limit为-1, 则表示所有数据integer $offset 偏移量是多少, 默认为0 返回:array 数据集, 二维数组. 每行代表一列数据
代码:$aData = kernel::database()->selectlimit('select * from sdb_ecbook_item',1,2); 返回值:Array([0] => Array([item_id] => 2[item_name] => ww[item_subject] => fsdafasdf))
getRows
通过mysql结果集连接标识, 获取单/多行数据
参数:resource $rs mysql结果集连接标识integer $rows 取几行数据 返回:array 多行数据集
代码:$db = kernel::database();$rs = $db->exec('select * from sdb_ecbook_item');$aData = $db->getRows($rs,2); 返回值:Array([0] => Array([item_id] => 0[item_name] => ami[item_subject] => abcde)[1] => Array([item_id] => 1[item_name] => 0642[item_subject] => aaaa))
count
统计表的数据行数
参数:$sql select sql语句 返回:integer 行数
代码:$num = kernel::database()->count('select * from sdb_ecbook_item'); 返回值:3
quote
对准备入数据库表字段的数据做安全转义处理
参数:$string 字符串 返回:$string 转义后的字符串
代码:$aData = kernel::database()->quote('abc"ecos"ab=ab'); 返回值:'abc\"ecos\"ab=ab'
lastinsertid
获取最后插入数据库的条目的id号
返回:integer 插入数据库的id号
kernel::database()->lastinsertid();
affect_row
获取之前mysql语句操作所影响的行数
返回:integer 如果成功返回影响的行数, 如果失败返回-1
errorinfo
返回之前mysql语句操作所产生的错误文本信息
返回:string 如果成功返回相应的错误信息, 否则返回空数组''
errorcode
返回之前mysql语句操作所产生的错误号
返回:string 如果成功返回相应的错误号, 否则返回空数组0
beginTransaction
开始事务
返回:bool|resource 如果成功返回mysql连接标识, 失败返回false
commit
事务提交
返回:bool 成功为true, 失败为false
rollBack
事务回滚
Ecos 数据库操作相关推荐
- Python的数据库操作(Sqlalchemy)
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...
- 便捷,轻巧的Groovy数据库操作
本文主要介绍Groovy对数据的CRUD操作,熟悉groovy.sql包,测试使用的数据库是H2. 1.数据库连接配置 //数据库连接配置 def db = [url:'jdbc:h2:mem:gro ...
- Django模型之数据库操作-查询
六.数据库操作-查询 6.1基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果.[返回的所有结果是列表] count查询结果数量 ...
- 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)
1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名 [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...
- .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...
ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...
- oracle可以面向对象吗,Jbdc助手-数据库操作面向对象的实现(oracle)
前言: 如果你对hibernate不是那样的推崇,但感觉jdbc的sqlr操作又不是那么OO的话,那么这篇文章可能给能带来或多或少的期望- 在很长的一段时间里,中总感觉应该对sql的操作来实现一种集成 ...
- yii mysql数据库操作_Yii2数据库操作常用方法小结
本文实例讲述了Yii2数据库操作常用方法.分享给大家供大家参考,具体如下: 查询: // find the customers whose primary key value is 10 $custo ...
- mfc 访问局域网mysql_数据库操作:MFC连接与MYSQL
数据库操作:MFC连接与MYSQL mysql 与MFC通常情况下都是用ODBC或者是是ADO相连接,但有点伤 我直接找网上的教程,仿照着进行连接,试了n边还是只能连接上,但无法进行如图读取,写入的操 ...
- 数据库操作(使用FMDB)
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
最新文章
- java序列化库_java 中序列化(Serializable)
- javascript小游戏_javaScript小游戏——网页版别踩白块
- 以太坊 node data write error_Node之 创建服务器与客户端
- 安装CoreOS到磁盘
- java程序员的发展之路和职业规划
- python三方库打包项目中_将Python库打包到项目中
- 随想录(字节序和位序)
- RTOS原理与实现08:存储块实现
- 报表性能优化方案之单数据集分页SQL实现层式报表
- 结束下面sql块_oracle: PL/SQL基本结构,语法,变量
- 基于FPGA的人脸识别
- MongoDB可视化管理工具-Robo 3T
- SNMP中的MIB是什么?
- DirectX12(D3D12)基础教程(十九)—— 多实例渲染
- 热点讨论:IT人,40岁以后能干什么?
- 【codeforces 894A】QAQ
- 宽带服务器盒信号灯红色闪烁,光纤灯红色闪烁怎么解决(图文)
- 如何向oracle中导入数据,Oracle导入导出数据库的语法_Oracle_Oracle语法_Oracle数据库_课课家...
- 论随机数AC大法(1)
- RSPSS重复测量方差分析
热门文章
- 房地产CRM实践进入成长期
- QEMU + ARMv8 环境搭建
- import * as xxx from ‘xxx ’ 与import xxx from ‘xxx’区别
- 解决office2010版excel多开自动叠加一个窗口至多个窗口
- PCI网卡上扩展ROM编程 1.前言
- 计算机依赖英语作文,网络依赖症英语作文 How Will Our Life Go on without Internet?
- Kolin 更优雅的封装ProgressDialog
- Ubuntu子用户下安装cuda(新)
- 如何停止无意义的内耗
- 互联网网站架构演进之 58同城前十年架构演进