微擎数据库查询函数汇总

目录

pdo_get,pdo_getcolumn,pdo_getall,pdo_getslice,pdo_fetch,pdo_fetchcolumn,pdo_fetchall,pdo_insert,pdo_update,pdo_delete,pdo_query,pdo_run,pdo_fieldexists,pdo_indexexists,pdo_tableexists,pdo_fieldmatch,pdo_debug


写个博客方便查看

pdo_get

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

$tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
$condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围查询
$fields 参数指定查询返回的字段列表
示例

//生成的SQL等同于:SELECT username FROM ims_users WHERE username = 'mizhou' AND status = '1' LIMIT 1
$user = pdo_get('users', array('username' => 'mizhou', 'status' => 1), array('username'));

pdo_getcolumn

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

$tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
$condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围查询
$field 要获取的字段名称

//生成的SQL等同于:SELECT username FROM ims_users WHERE uid = '1' LIMIT 1
$username = pdo_getcolumn('users', array('uid' => 1), 'username');

pdo_getall

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

$keyfield 参数传入一个已存在的字段名称,结果数组键值就为该字段,否则为自然排序

//生成的SQL等同于:SELECT * FROM ims_users WHERE status = '1'
$user = pdo_getall('users', array('status' => 1));

pdo_getslice

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

$limit 参数指定查询语句的LIMIT值,array(start, end) 或是直接传入范围 2,3
$total 参数指定查询结果的总条数,方便进行分页操作

$user = pdo_getslice('users', array(), array(0, 10), $total);
echo $total;

pdo_fetch

pdo_fetch() - 根据SQL语句,查询一条记录

$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致

// :uid 是参数的一个占位符,没有使用引号,传入的第二个参数中要与SQL中的占位名称相同
$user = pdo_fetch("SELECT username, uid FROM ".tablename('users')." WHERE uid = :uid LIMIT 1", array(':uid' => 1));
// LIKE 占位的使用方法
$user = pdo_fetch("SELECT * FROM ".tablename('users')." WHERE username LIKE :username", array(':username' => '%mizhou%'));

pdo_fetchcolumn

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

$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致
$column 参数指定返回记录集的第几列数据

// 获取用户的总数,返回的值是一个数字
$user_total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('users'));

pdo_fetchall

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

$sql 参数指定要返回记录集的SQL语句
$params 参数指定为SQL语句中的参数绑定传值,防止SQL注入
需要注意的是使用参数绑定时,SQL语中等号后不需要使用引号,传入的值必须与绑定的名称一致

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

pdo_insert

pdo_insert() - 对指定数据表插入一条新记录

$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$data 参数指定要插入的记录,格式为与数据表字段对应的关联数组
$replace 参数指定插入方式使用 INSERT 语句或是 REPLACE 语句(查找到主键相同的数据选择update)

//添加一条用户记录,并判断是否成功
$user_data = array(
    'username' => 'mizhou1',
    'status' => '1',
);
$result = pdo_insert('users', $user_data);
if (!empty($result)) {
    $uid = pdo_insertid();
    message('添加用户成功,UID为' . $uid);
}

pdo_update

pdo_update() - 更新指定的数据表的记录

$glue 参数指定前面 $condition 数组条件的关联字 AND 或是 OR

//更uid等于2的用户的用户名
$user_data = array(
    'username' => 'mizhou2',
);
$result = pdo_update('users', $user_data, array('id' => 2));
if (!empty($result)) {
    message('更新成功');
}

pdo_delete

pdo_delete() - 删除指定条件的数据

$tablename 参数指定要插入记录的数据表名,此处传入的表名不要使用tablename()函数
$condition 参数指定查询的条件,以是 AND 连接,支持大于,小于等范围查询
$glue 参数指定前面 $condition 数组条件的关联字 AND 或是 OR

//删除用户名为mizhou2的记录
$result = pdo_delete('users', array('username' => 'mizhou2'));
if (!empty($result)) {
    message('删除成功');
}

pdo_query

pdo_query() - 运行一条SQL语句

$params 指定SQL语句中绑定参数的值,参数占位与 pdo_fetch 一致

//更uid等于2的用户的用户名
$result = pdo_query("UPDATE ".tablename('users')." SET username = :username, age = :age WHERE uid = :uid", array(':username' => 'mizhou2', ':age' => 18, ':uid' => 2));
//删除用户名为mizhou2的记录
$result = pdo_query("DELETE FROM ".tablename('users')." WHERE uid = :uid", array(':uid' => 2));
if (!empty($result)) {
    message('删除成功');
}

pdo_run

pdo_run() - 批量执行SQL语句

$stuff 函数将会将此参数指定的值,替换为当前系统的表前缀。
注:与pdo_query不同的是,pdo_run是可以一次执行多条SQL语句,每条SQL必须以;分隔。
示例
$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_fieldexists

pdo_fieldexists() - 检查表中是否存在某个字段

$tablename 参数指定要检查的表名称
$fieldname 参数指定要检查是否存在的字段名

//如果shopping_goods表中不存在credit字段,则新增credit字段
if(!pdo_fieldexists('shopping_goods', 'credit')) {
    pdo_query("ALTER TABLE ".tablename('shopping_goods')." ADD `credit` int(11) NOT NULL DEFAULT '0';");
}

pdo_indexexists

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

$tablename 参数指定要检查的表名称
$indexname 参数指定要检查是否存在的索引名

//如果site_slide表中不存在multiid索引,则新增multiid索引
if (!pdo_indexexists('site_slide', 'multiid')) {
    pdo_query("ALTER TABLE ".tablename('site_slide')." ADD INDEX `multiid` (`multiid`);");
}

pdo_tableexists

pdo_tableexists() - 检查数据库中是否存在某个表

$tablename 参数指定要检查的表名称
示例
if (!pdo_tableexists('site_slide')) {
    echo '表不存在';
}

pdo_fieldmatch

pdo_fieldmatch() - 检查某个表中的字段类型是不是符合

$tablename 要检查的表名
$fieldname 要检测的字段名
$datatype 检测该字段是不是与此值相符
$length 检测该字段长度是不是与此值相符

pdo_fieldmatch('users', 'id', 'varchar'); // 类型不符合,返回 false
pdo_fieldmatch('users', 'id', 'int'); // 类型符合,返回 true
pdo_fieldmatch('users', 'id', 'int', 5); // 长度不符合,返回 -1

pdo_debug

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

示例
pdo_debug();
//调用该函数结果如下
返回
Array
(
[0] => Array
    (
        [sql] => SET NAMES 'utf8';
        [error] => Array
            (
                [0] => 00000
                [1] => 
                [2] => 
            )
    )
[1] => Array
    (
        [sql] => SELECT `value` FROM `ims_core_cache` WHERE `key`=:key
        [params] => Array
            (
                [:key] => setting
            )
        [error] => Array
            (
                [0] => 00000
                [1] => 
                [2] => 
            )
    )
)

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值