// 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();
}
?>
正常输出中文:
PHP 操作 postgresql
[日志分享]
[日志信息]
该日志于 2010-08-22 00:02 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “PHP 操作 postgresql” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢