• [转]微擎应用笔记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
  • 相关阅读:
    Java 快速入门-06-JDK 目录文件说明
    Java快速入门-05-数组循环条件 实例《延禧攻略》
    腾讯云服务器 选购+远程控制 图文教程
    无法获得锁 /var/lib/dpkg/lock
    Ubuntu 安装 PhpMyAdmin 图文教程
    基于Redis的BloomFilter算法去重
    CAP理论
    Linux常用命令回顾
    基于Solr实现HBase的二级索引
    Solr搜索服务架构图
  • 原文地址:https://www.cnblogs.com/freeliver54/p/9406848.html
Copyright © 2020-2023  润新知