Ruan Blog - 阮家森的博客 Ruan Blog - 阮家森的博客

【微擎】数据库操作

in 微擎框架read (1063) 站长Ruan 文章转载请注明来源!

数据基本操作

微擎系统数据库操作使用 PDO 兼容方式,以参数绑定的形式进行查询操作。
系统已对 PDO 兼容性进行检测及封装。下面具体说明一下数据库的几种基本操作方法。
tablename()
为了防止微擎系统的表与其它系统命名冲突,安装微擎时均会指定一个表前缀,在写SQL语句时,需要将表名称附加上表前缀。可以使用 tablename() 函数。

$sql = "SELECT * FROM ".tablename('users');
echo $sql;
//输出 SELECT * FROM ims_users

范围条件操作

注意:该范围条件操作只支持微擎20160601以后的版本!!!

具体支持的范围操作符如下:

array('>', '<', '<>', '!=', '>=', '<=', 'NOT IN', 'not in', '+=', '-=');

字段名与操作符组成条件数组的键名,字段名与操作符中间间隔一个空格,具体使用方法如下:

//获取acid大于269的公众号
$account = pdo_get('account', array('acid >' => '269'));

//增加一次用户的错误登录次数,两次变为2即可

pdo_update('users_failed_login', array('count +=' => 1), array('username' => 'mizhou'));

//**微擎20160601以前可以这样写 来实现在字段上更新+1**//
pdo_query("UPDATE".tablename('users_failed_login')." SET count = count+1 WHERE username=username", array('username' => 'mizhou'));

查询语句

  • pdo_get

    根据条件(AND连接)到指定的表中获取一条记录

array | boolean pdo_get($tablename, $condition = array(), $fields = array());
  • pdo_getcolumn

    根据条件(AND连接)到指定的表中获取一条记录的指定字段

string | int pdo_getcolumn($tablename, $condition = array(), $field, $limit=1);
  • pdo_getall

    根据条件(AND连接)到指定的表中获取全部记录

    • $condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围条件.。具体使用查看本章节第二段范围条件操作
    • $keyfield 参数传入一个已存在的字段名称,结果数组键值就为该字段,否则为自然排序
    • $orderby 参数指定查询结果按哪个字段排序
    • $limit 参数指定查询语句的LIMIT值,array(start, end) 或是直接传入范围 2,3
    • 其它参数同pdo_get函数
array | boolean pdo_getall($tablename, $condition = array(), $fields = array(), $keyfield = '',$orderby = array(), $limit = array()) 
  • pdo_getslice

    根据条件(AND连接)到指定的表中获取某个区间的记录,此函数和 pdo_getall 的区别是可以指定limit 值

array | boolean pdo_getslice($tablename, $condition = array(), $limit = array(), &$total = null, $fields = array(), $keyfield = '', $orderby = array())
  • pdo_fetch

    根据SQL语句,查询一条记录

array | boolean pdo_fetch($sql, $params = array());
  • pdo_fetchcolumn

    根据SQL语句,查询第一条记录的第N列的值,此语句与 pdo_fetch 使用相同,只是此函数返回的不是一个数组而是一个字符串

string | boolean pdo_fetchcolumn($sql, $params = array(), $column = 0)
  • pdo_fetchall

    根据SQL语句,查询全部记录,使用方法与pdo_fetch相同

array | boolean pdo_fetchall($sql, $params = array(), $keyfield = '')

变更语句

  • pdo_insert

    对指定数据表插入一条新记录

int | boolean pdo_insert($tablename, $data = array(), $replace = false)
  • pdo_update

    更新指定的数据表的记录

array | boolean pdo_update($tablename, $data = array(), $condition, $glue = 'AND')
  • pdo_delete

    删除指定条件的数据

int | boolean pdo_delete($tablename, $condition = array(), $glue = 'AND')

运行语句

  • pdo_query

    运行一条SQL语句

int | boolean query($sql, $params = array())
  • pdo_run

    批量执行SQL语句

    • $stuff 函数将会将此参数指定的值,替换为当前系统的表前缀。
      注:与pdo_query不同的是,pdo_run是可以一次执行多条SQL语句,每条SQL必须以;分隔。
boolean run($sql, $stuff = 'ims_')

示例:

$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `ims_multisearch` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `weid` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `ims_multisearch_fields` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `reid` int(10) unsigned NOT NULL,
  `type` tinyint(1) unsigned NOT NULL DEFAULT '1',
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_reid` (`reid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
EOF;
 
pdo_run($sql);

辅助函数

  • pdo_query

    检查表中是否存在某个字段

boolean pdo_fieldexists($tablename, $fieldname)
  • pdo_indexexists

    检查数据库中是否存在某个表

boolean pdo_tableexists($tablename)
  • pdo_debug

    调试运行SQL语句,显示执行过的SQL的栈情况

array debug($output = true, $append = array())
文章二维码

扫描二维码,在手机上阅读!

w7
最后由Ruan修改于2018-03-07 20:31

此处评论已关闭

PREVIOUS NEXT
雷姆
拉姆