几点建议:
1、如果我
$db = new PDOX;
$a = $db->query($sql1);
$b = $db->query($sql2);
print_r($a->fetchall());
print_r($b->fetchall());
可以吗?显然是不可以的,因为
$this->statement = $this->pdo->query($sql);
前一次的查询结果被后一次的覆盖了
2、事务(Transaction)操作宜封装成整体,只传入一组 sql 而隐藏相关操作
3、没考虑使用存储过程
4、PDOX 可直接继承于 PDO 而无需抄写 PDO 已有方法

解决方案 »

  1.   

    谢谢你的宝贵意见,我仅仅是想让它操作更简单化一点。
    1、像你举的这个例子,可有解决方法。
    2、事务我很少用到,也不知道该怎样封装。如果你能指点一下更好。
    3、存储过程也很少用到。
    4、抄写PDO的方法,只是想在使用上和PDO无异样,方便直接写PDO的朋友直接使用此类。无须过多的学习。不像其它的数据库类,在学完原生的数据库操作后,又要再次学习一个新的数据库操作,可能它很简单,但学习也是要时间的。请问怎样整合会更简洁此呢??
      

  2.   

    封装的目的是为了简化操作,不常用的就没有不要封装了
    class PDOX extends PDO {
      //执行各种 sql 指令,并可通过参数 $param 进行扩展
      function query($sql, $param=null) {}
      //查询并返回单条记录
      function fetch($sql) {};
      //查询并以数组方式返回多条记录
      function fetchall($sql) {}
    }数据库类只要有这三个方法就可满足绝大多数应用的需要了
    由于是继承于 PDO,所以 PDO 原有的方法一个也不会少
      

  3.   

    @xuzuning$db = new PDOX;
    $a = $db->query($sql1);
    $b = $db->query($sql2);
    print_r($a->fetchall());
    print_r($b->fetchall());这种写法的程序员应该不多吧?如果这样的话,可以考虑先放弃这种操作支持。如果我的类在效率或者并发上有问题的话,这才是大问题。这个类内部是否有错误或者不妥之处??各位大牛,请多多发言。
      

  4.   

    简单的插入数据:
    $data = array(':title'=>$title, ':content'=>$content);
    $pdo  = new PDOX;
    $lastID = $pdo->insertBind('article', $data);
    修改数据:
    $data = array(':title'=>$title, ':id'=>$id);
    $sql   = 'update article set title=:title where id=:id';
    $yesorno = $pdo->updateBind($sql, $data);删除数据:
    $data = array(':id'=>$id);
    $sql   = 'delete article  where id=:id';
    $yesorno = $pdo->deleteBind($sql, $data);最主要的是这种写法,可以省下很多的代码量。这才是我写此类的关键。
      

  5.   


    你说的这个还真是,在递归中需要使用。想使用此类的朋友要注意了。我会尽量优化PHP代码或者使用其它方法替代递归,因为递归有些耗资源。谢谢你提醒。
      

  6.   


    不知道版主可有更好的PDO操作类???
    可否贡献一个。