[转]微擎应用笔记1--数据操作函数

本文转自:https://blog.csdn.net/seven_north/article/details/79498768

数据库操作规范

tablename

  1.  
    $sql = "SELECT * FROM ".tablename('users');
  2.  
    =>>SELECT * FROM ims_users

array范围操作

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

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

  • $tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
  • $condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围条件。
  • $fields 参数指定查询返回的字段列表
  • $limit 参数指定查询表中获取一条记录
pdo_get($tablename, $condition = array(), $fields = array());

根据uid获取用户的用户名和信息

  1.  
    SELECT username, uid FROM ims_users WHERE uid = '1' LIMIT 1
  2.  
    =>>$user = pdo_get('users', array('uid' => 1), array('username', 'uid'));
  1.  
    SELECT username FROM ims_users WHERE username = 'mizhou' AND status = '1' LIMIT 1
  2.  
    =>>$user = pdo_get('users', array('username' => 'mizhou', 'status' => 1), array('username'));
pdo_getcolumn

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

  • $tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
  • $condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围条件.。
  • $field 参数指定查询返回的字段
  • $limit 参数指定查询表中获取一条记录
pdo_getcolumn($tablename, $condition = array(), $field, $limit=1);
  1.  
    SELECT username FROM ims_users WHERE uid = '1' LIMIT 1
  2.  
    =>>$username = pdo_getcolumn('users', array('uid' => 1), 'username',1);
pdo_getall

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

  • $condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围条件.。
  • $keyfield 参数传入一个已存在的字段名称,结果数组键值就为该字段,否则为自然排序
  • $orderby 参数指定查询结果按哪个字段排序
  • $limit 参数指定查询语句的LIMIT值,array(start, end) 或是直接传入范围0~∞
  • 其它参数同pdo_get函数
pdo_getall($tablename, $condition = array(), $fields = array(), $keyfield = '',$orderby = array(), $limit = array())
  1.  
    //SELECT * FROM ims_users WHERE status = '1'
  2.  
    =>>$user = pdo_getall('users', array('status' => 1));
  1.  
    //SELECT * FROM ims_users WHERE status =' 2' ORDER BY uid,groupid LIMIT 0, 10
  2.  
    =>>$user = pdo_getall('users', array('status' => 1), array() , '' , array('uid','groupid') , array(1,10));
  3.  
    =>>$user1 = pdo_getall('users', array('status' => 1), array() , '' , 'uid DESC' , array(1,10));
pdo_getslice

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

  • $condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围条件.。
  • $limit 参数指定查询语句的LIMIT值,array(start, end) 或是直接传入范围 2,3
  • $total 参数指定查询结果的总条数,方便进行分页操作
  • $orderby 参数指定查询结果按哪个字段排序
pdo_getslice($tablename, $condition = array(), $limit = array(), &$total = null, $fields = array(), $keyfield = '', $orderby = array())
  1.  
    $user = SELECT * FROM ims_users WHERE status ='2' ORDER BY uid,groupid LIMIT 0, 10
  2.  
    =>>$user = pdo_getslice('users', array('status' => 2), array(1,10) , $total , array() , '' , array('uid','groupid'));

pdo_fetch

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

  • $sql 参数指定要返回记录集的SQL语句
  • $params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
    需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致
pdo_fetch($sql, $params = array());
  1.  
    // :uid 是参数的一个占位符,没有使用引号,传入的第二个参数中要与SQL中的占位名称相同
  2.  
    $user = pdo_fetch("SELECT username, uid FROM ".tablename('users')." WHERE uid = :uid LIMIT 1", array(':uid' => 1));
  3.  
    // LIKE 占位的使用方法
  4.  
    $user = pdo_fetch("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%mizhou%'));
pdo_fetchcolumn

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

  • $column 参数指定返回记录集的第几列数据
pdo_fetchcolumn($sql, $params = array(), $column = 0)
  1.  
    // 获取用户的总数,返回的值是一个数字
  2.  
    $user_total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('users'));
pdo_fetchall

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

pdo_fetchall($sql, $params = array(), $keyfield = '')
  1.  
    // 需要注意的是,返回的数组的键值为用户的uid
  2.  
    $user = pdo_fetchall("SELECT * FROM ".tablename('users'), array(), 'uid');
pdo_insert

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

  • $tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
  • $data 参数指定要插入的记录,格式为与数据表字段对应的关联数组
  • $replace 参数指定插入方式使用 INSERT 语句或是 REPLACE 语句(查找到主键相同的数据选择update)
pdo_insert($tablename, $data = array(), $replace = false)
  1.  
    $user_data = array( 'username' => 'mizhou1', 'status' => '1',);
  2.  
    $result = pdo_insert('users', $user_data);
pdo_update

更新指定的数据表的记录

  • $glue 参数指定前面 $condition 数组条件的关联字 AND 或是 OR
pdo_update($tablename, $data = array(), $condition, $glue = 'AND')
  1.  
    $user_data = array( 'username' => 'mizhou2',);
  2.  
    $result = pdo_update('users', $user_data, array('id' => 2));
pdo_delete

删除指定条件的数据

pdo_delete($tablename, $condition = array(), $glue = 'AND')
$result = pdo_delete('users', array('username' => 'mizhou2'));
pdo_query

运行一条SQL语句

  • $params 指定SQL语句中绑定参数的值,参数占位与 pdo_fetch 一致
query($sql, $params = array())
  1.  
    //更新uid等于2的用户的用户名
  2.  
    $result = pdo_query("UPDATE ".tablename('users')." SET username = :username, age = :age WHERE uid = :uid", array(':username' => 'mizhou2', ':age' => 18, ':uid' => 2));
  1.  
    //删除用户名为mizhou2的记录
  2.  
    $result = pdo_query("DELETE FROM ".tablename('users')." WHERE uid = :uid", array(':uid' => 2));
  3.  
    if (!empty($result)) { message('删除成功');}

pdo_run
批量执行SQL语句

  • $stuff 函数将会将此参数指定的值,替换为当前系统的表前缀。
    注:与pdo_query不同的是,pdo_run是可以一次执行多条SQL语句,每条SQL必须以;分隔。
pdo_run($sql, $stuff = 'ims_')
  1.  
    $sql = <<<EOF
  2.  
    CREATE TABLE IF NOT EXISTS `ims_multisearch` (
  3.  
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  4.  
    `weid` int(10) unsigned NOT NULL,
  5.  
    PRIMARY KEY (`id`)
  6.  
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  7.  
     
  8.  
    CREATE TABLE IF NOT EXISTS `ims_multisearch_fields` (
  9.  
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  10.  
    `reid` int(10) unsigned NOT NULL,
  11.  
    `type` tinyint(1) unsigned NOT NULL DEFAULT '1',
  12.  
    `title` varchar(255) NOT NULL,
  13.  
    PRIMARY KEY (`id`),
  14.  
    KEY `idx_reid` (`reid`)
  15.  
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  16.  
    EOF;
  17.  
     
  18.  
    pdo_run($sql);
pdo_fieldexists

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

  • $tablename 参数指定要检查的表名称
  • $fieldname 参数指定要检查是否存在的字段名
pdo_fieldexists($tablename, $fieldname)
  1.  
    //如果shopping_goods表中不存在credit字段,则新增credit字段
  2.  
    if(!pdo_fieldexists('shopping_goods', 'credit')) {
  3.  
    pdo_query("ALTER TABLE ".tablename('shopping_goods')." ADD `credit` int(11) NOT NULL DEFAULT '0';");
  4.  
    }

pdo_indexexists
检查表中是否存在某个索引

  • $tablename 参数指定要检查的表名称
  • $indexname 参数指定要检查是否存在的索引名
pdo_indexexists($tablename, $indexname)
  1.  
    //如果site_slide表中不存在multiid索引,则新增multiid索引
  2.  
    if (!pdo_indexexists('site_slide', 'multiid')) {
  3.  
    pdo_query("ALTER TABLE ".tablename('site_slide')." ADD INDEX `multiid` (`multiid`);");
  4.  
    }
pdo_tableexists

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

pdo_tableexists($tablename)

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

  • $output 参数指定是否直接打印出调试信息
debug($output = true, $append = array())
  1.  
    pdo_debug();
  2.  
     
  3.  
    //调用该函数结果如下
  4.  
    Array
  5.  
    (
  6.  
    [0] => Array
  7.  
    (
  8.  
    [sql] => SET NAMES 'utf8';
  9.  
    [error] => Array
  10.  
    (
  11.  
    [0] => 00000
  12.  
    [1] =>
  13.  
    [2] =>
  14.  
    )
  15.  
    )
  16.  
    [1] => Array
  17.  
    (
  18.  
    [sql] => SELECT `value` FROM `ims_core_cache` WHERE `key`=:key
  19.  
    [params] => Array(
  20.  
    [:key] => setting
  21.  
    )
  22.  
    [error] => Array(
  23.  
    [0] => 00000
  24.  
    [1] =>
  25.  
    [2] =>
  26.  
    )
  27.  
    )
  28.  
    )
引用:微擎开发文档
版权声明:转载请注明出处~ https://blog.csdn.net/seven_north/article/details/79498768
原文地址:https://www.cnblogs.com/freeliver54/p/9406848.html