当前位置: 主页 > 日志 > PHP >

PHP 操作 postgresql

// by redice 2010.08.21

我尝试了两种方案:

(1)第一种方案:采用php内置的pgsql扩展。

首先,打开这个扩展就费了不少事,然后php读取含中文的字段,得到的是乱码。感觉不太好用。

如何打开pgsql扩展?

1)去掉php.ini中;extension=php_pgsql.dll之前的分号;
2)拷贝php根目录下的 libpq.dll 到system32下;
3)将postgresql的bin目录下的如下文件拷贝到system32下:
comerr32.dll
gssapi32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv2.dll
libintl3.dll
libpq.dll
ssleay32.dll
注意:我就是因为少了这一步,导致pgsql扩展始终打不开,后来看了CSDN论坛中某网友的提示才搞定。
原文地址:http://topic.csdn.net/u/20100303/16/9b655120-533d-4296-a93c-460e7eff17db.html
4)重启iis。

扩展打开后,通过phpinfo可以看到pgsql节的信息,如下图所示。




php通过pgsql扩展操作postgresql代码如下:
<?php

  // 连接postgresql,选择数据库 
    $dbconn = pg_connect("host=localhost  dbname=VSB2008   user=root   password=see2006") 
            or die('Could notconnect:'. pg_last_error()); 
    
    pg_query('set client_encoding=UTF8');
    
    //   执行   SQL   查询 
    $query  =  'SELECT  * FROM   wbnews'; 
    $result =  pg_query($query)  or  die( 'Query  failed: ' .  pg_last_error()); 
    
    while ($result && $line = pg_fetch_array($result))   
    { 
       // 这个字段含有中文,输出的就是乱码,页面编码和数据库编码均采用了UTF8
       // 网上查了N多资料,未果
       // 期待高手解决
       echo $line['wbtitle']."<br/>";
    } 
    
    //   释放结果集 
    pg_free_result($result); 
    //   关闭连接 
    pg_close($dbconn); */
    
?>


乱码截图如下:



(2)第二种方案:采用postgresql ODBC驱动+ADODB。

这种方法读取中文字段未出现乱码,不错。


postgresql ODBC驱动下载地址如下:
http://wwwmaster.postgresql.org/redir/391/f/odbc/versions/msi/psqlodbc_08_04_0200.zip

创建数据源如下图所示。




操作代码如下:
<?php
    // 连接postgresql数据库
    $mdb_conn = new com("ADODB.Connection");
    $connstr = "xyh";
    
    $mdb_conn->Open($connstr);
    
    $mdb_rs = new com("ADODB.RecordSet");
    $mdb_rs->Open("select * from wbnews",$mdb_conn,1,1);
    
    $num=0;
    while(! $mdb_rs->eof) 
    {
        $f = $mdb_rs->Fields("wbtitle");
        // 输出中文未出现乱码
        echo $f->value."<br/>";
        
        $mdb_rs->MoveNext();
    }

?>


正常输出中文:

[日志信息]

该日志于 2010-08-22 00:02 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “PHP 操作 postgresql” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部