mPHP核心框架封装的PDO数据库操作类实现增删改查

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/65/ ]

早在2011年,在学习Mysql的过程中就了解到一些提供数据库抽象层的访问接口,如PDO和ADODB.网上大部分的文档表明,这些数据库抽象层的用途在于,当把web程序的数据库从mysql改为postgresql或其他数据库的时候,从数据库中存取数据的方式无需改变.我的理解就是:换了数据库,也不用重写sql语句.

早在2011年,在学习Mysql的过程中就了解到一些提供数据库抽象层的访问接口,如PDO和ADODB。网上大部分的文档表明,这些数据库抽象层的用途在于,当把web程序的数据库从mysql改为postgresql或其他数据库的时候,从数据库中存取数据的方式无需改变。我的理解就是:换了数据库,也不用重写sql语句。

很长时间,我都没有尝试过使用这类数据库抽象层,理由很简单,我一直在用mysql数据库,没有更换的必要,为此自己封装了mysql、mysqli的数据库操作类。

直到2013年,回到南宁加入的第一家刚成立不久的互联网公司,他们使用PDO操作的postgresql数据库,再有关于PHP6的传闻(以后统一使用PDO操作数据库),才开始尝试把mysqli类重写成PDO类,加入mPHP核心框架中。

我在测试PDO的过程中发现,有部分功能在不同的数据库中,并不通用,举个简单的例子,mysql和postgresql这两个数据库,分别获取某一张表最后插入的ID。在mysql数据库中

<?php
$pdo = new PDO('mysql:host=127.0.0.1;dbname=数据库', '用户名', '密码');
$intId = $pdo->lastInsertId();
echo $intId;//输出最后插入表中的ID

但是在postgresql数据库中,直接使用lastInsertId()就无法获取到数据,还得传递对应参数。比如要获取表mo2g_test中最后一个插入的ID,需要传递的参数为mo2g_test_id_seq。

<?php
$pdo = new PDO('pgsql:host=127.0.0.1;dbname=数据库', '用户名', '密码');
$intId = $pdo->lastInsertId();
echo $intId;//错误
$intId = $pdo->lastInsertId('mo2g_test_id_seq');
echo $intId;//正确

虽然有些功能不兼容,但是主要的增删改查功能,都是没问题的,所以我只封装了PDO的常用功能:

1)连接数据库:__construct($arrConfig)

2)插入数据:insert($table,$arrData,$true = false)

3)删除数据:delete($table,$condition)

4)更新数据:update($table,$arrData,$condition)

5)查找数据

    select($select,$table,$condition = '',$order = array(), $limit = '')

    query($strSql)

5)获取数据

    fetch()

    fetch_all()

相应的功能的代码实现,请点击对应的连接进行查看,如果在使用的过程中遇上什么问题,可以给我留言。

评论:

  1. unknown 回复2015年05月31日 22时41分
    磨者
    不错的文章,内容层次清晰.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  2. unknown 回复2015年06月01日 20时10分
    磨者
    不错的文章,内容出神入化.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  3. unknown 回复2015年06月04日 03时46分
    磨者
    好文章,内容文风幽默.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  4. 我来说两句:

      切换  

    磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

      切换  

    磨途歌随机验证码