zoukankan      html  css  js  c++  java
  • php 使用pdo连接postgresql

    有关pdo的使用可以参考:

    http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/08/12/1797753.html

    1、连接数据库方法

    function _conn($t) {
        //static $db;
        if (is_null ( $db )) {
            global $Config;
            $dsn = $Config ['server'] [$t] ['type'] . ":dbname=" . $Config ['server'] [$t] ['dbname'] . ";host=" . $Config ['server'] [$t] ['host'];
            //postgresql 的type为pgsql

         //echo $dsn; try { $db = new PDO ( $dsn, $Config ['server'] [$t] ['user'], $Config ['server'] [$t] ['passwd'] ); } catch ( PDOException $ex ) { print_r ( $ex ); return false; } } return $db; }

    2、使用示例

    //查询user表用户信息
    $sql = sprintf ( "SELECT * FROM %s WHERE passport = '%s' and passwd = '%s';", "user", $passport, sha1 ( $passwd ) );
    $info = $db->query ( $sql )->fetch ( PDO::FETCH_ASSOC );
    //如果是insert或update语句,不能使用query,可以使用$db->exec($sql);

    注意:使用postgresql时,lastInsertId()返回false,无法用

    参考解决办法:

    function pgsqlLastInsertId($sqlQuery, $pdoObject)
    {
    // Checks if query is an insert and gets table name
        if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $sqlQuery, $tablename) )
        {
    // Gets this table's last sequence value
            $query = "SELECT currval('" . $tablename[1] . "_id_seq') AS last_value";
            $temp_q_id = $pdoObject->prepare($query);//$tablename[1]替换为你的表名
            $temp_q_id->execute();
            if($temp_q_id)
            {
                $temp_result = $temp_q_id->fetch(PDO::FETCH_ASSOC);
                return ( $temp_result ) ? $temp_result['last_value'] : false;
            }
        }return false;
    }
    
    $pdoObject = new PDO('pgsql:host=localhost;dbname=mydb', 'user', 'pass');
    $sql = 'INSERT INTO table (column) VALUES (\'some_value\');';
    $result = $pdoObject->prepare($sql);
    $result->execute();
    //至此,可以成功的取到上一条插入数据的id了。
    echo 'Last Insert ID: ' . pgsqlLastInsertId($sql, $pdoObject);                
  • 相关阅读:
    Java 基础
    Java 数据类型
    Spring 拦截器实现事物
    SSH 配置日记
    Hibernate 知识提高
    Jsp、Servlet
    leetcode 97. Interleaving String
    leetcode 750. Number Of Corner Rectangles
    leetcode 748. Shortest Completing Word
    leetcode 746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/wuheping/p/2862782.html
Copyright © 2011-2022 走看看