PDO的使用

  •   2009-07-31/22:44
  • //首先要连接mysql数据库
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    //如果你想连mssql:
    //mssql:host=localhost;dbname=testdb
    //连pgsql:
    //pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass
    //连odbc(DSN)
    //odbc:testdb
    //连access:
    //odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin
    //还有oracle,sqlite,db2....

    //执行个查询
    foreach ($dbh->query('SELECT * from FOO') as $row) {
        print_r($row); //这个结果和mysql_fetch_array差不多。PDOStatement::setFetchMode 可以调整。
    }

    //另外还可以:
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();

    //将整个记录集读到数组里:
    $result = $sth->fetchAll();
    print_r($result);
    //输出:
    Array
    (
    [0] => Array
           (
             [NAME] => pear
             [0] => pear
             [COLOUR] => green
             [1] => green
           )

    [1] => Array
           (
             [NAME] => watermelon
             [0] => watermelon
             [COLOUR] => pink
             [1] => pink
           )

    )

    //插入 / 删 / 更新数据:
    $count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");
    //$count就是删除的条数。相当于mysql_affected_rows
    //也可用PDOStatement::rowCount

    //偶忘了偶用啥数据库了。。。。
    if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
       echo "Running on mysql; doing something mysql specific here\n";
    }

    //原来插入数据的时候要用mysql_escape_string,现在?
    print "Unquoted string: $string\n";
    print "Quoted string: " . $conn->quote($string) . "\n";
    //得到:
    Unquoted string: Nice
    Quoted string: 'Nice'
    //你看现在连引号都自动加了。。。。
    //注意在不同的数据库中结果不同,比如有的' => '',有的' => \',\ => \\
    //现在没顾虑了,全自动。

    //最后偶要关闭它了
    $conn = null;
    //但是!你可以保持连接:
    $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
        array(PDO_ATTR_PERSISTENT => true));

    //很简单的不是?

    附:特别简单的特殊调用方法:
    $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
    if ($stmt->execute(array($_GET['name']))) { //你怕啥?自动quote!
       while ($row = $stmt->fetch()) {
    print_r($row);
       }
    }

    也可以:
    $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $_FILES['file']['type']);
    $stmt->bindParam(3, $fp, PDO::PARAM_LOB);

    这么好的功能,哪里可以找到?php5.1以上在扩展里,php5在pecl里,php4?你别想了,没有。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多