PHP連接及操作PostgreSQL數(shù)據(jù)庫(kù)的方法詳解
本文實(shí)例講述了PHP連接及操作PostgreSQL數(shù)據(jù)庫(kù)的方法。分享給大家供大家參考,具體如下:
PostgreSQL擴(kuò)展在默認(rèn)情況下在最新版本的PHP 5.3.x中是啟用的。 可以在編譯時(shí)使用--without-pgsql來(lái)禁用它。仍然可以使用yum命令來(lái)安裝PHP-PostgreSQL接口:
yum install php-pgsql
在開始使用PHP連接PostgreSQL接口之前,請(qǐng)先在PostgreSQL安裝目錄中找到pg_hba.conf文件,并添加以下行:
# IPv4 local connections: host all all 127.0.0.1/32 md5
您可以啟動(dòng)/重新啟動(dòng)postgres服務(wù)器,使用以下命令運(yùn)行:
[root@host]# service postgresql restart Stopping postgresql service: [ OK ] Starting postgresql service: [ OK ]
Windows用戶必須啟用php_pgsql.dll才能使用此擴(kuò)展名。這個(gè)DLL包含在最新版本的PHP 5.3.x中的Windows發(fā)行版中。
PHP連接到PostgreSQL數(shù)據(jù)庫(kù)
以下PHP代碼顯示如何連接到本地機(jī)器上的現(xiàn)有數(shù)據(jù)庫(kù),最后將返回?cái)?shù)據(jù)庫(kù)連接對(duì)象。
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
?>
現(xiàn)在,讓我們運(yùn)行上面的程序打開數(shù)據(jù)庫(kù):testdb,如果成功打開數(shù)據(jù)庫(kù)連接,那么它將給出以下消息:
Opened database successfully
創(chuàng)建表
以下PHP程序?qū)⒂糜谠谥皠?chuàng)建的數(shù)據(jù)庫(kù)(testdb)中創(chuàng)建一個(gè)表:
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
} else {
echo "Table created successfully\n";
}
pg_close($db);
?>
當(dāng)執(zhí)行上述程序時(shí),它將在testdb數(shù)據(jù)庫(kù)中創(chuàng)建COMPANY表,并顯示以下消息:
Opened database successfully
Table created successfully
SQL
插入操作
以下PHP程序顯示了如何在上述示例中創(chuàng)建的COMPANY表中創(chuàng)建記錄:
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
} else {
echo "Records created successfully\n";
}
pg_close($db);
?>
當(dāng)執(zhí)行上述程序時(shí),它將在COMPANY表中創(chuàng)建給定的記錄,并顯示以下兩行:
Opened database successfully
Records created successfully
SELECT操作
以下PHP程序顯示了如何從上述示例中創(chuàng)建的COMPANY表中獲取和顯示記錄:
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
exit;
}
while($row = pg_fetch_row($ret)){
echo "ID = ". $row[0] . "\n";
echo "NAME = ". $row[1] ."\n";
echo "ADDRESS = ". $row[2] ."\n";
echo "SALARY = ".$row[4] ."\n\n";
}
echo "Operation done successfully\n";
pg_close($db);
?>
當(dāng)執(zhí)行上述程序時(shí),將產(chǎn)生以下結(jié)果。 請(qǐng)記下,在創(chuàng)建表時(shí)按照它們使用的順序返回字段。
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully
更新操作
以下PHP代碼顯示了如何使用UPDATE語(yǔ)句來(lái)更新指定記錄,然后從COMPANY表中獲取并顯示更新的記錄:
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
exit;
} else {
echo "Record updated successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
exit;
}
while($row = pg_fetch_row($ret)){
echo "ID = ". $row[0] . "\n";
echo "NAME = ". $row[1] ."\n";
echo "ADDRESS = ". $row[2] ."\n";
echo "SALARY = ".$row[4] ."\n\n";
}
echo "Operation done successfully\n";
pg_close($db);
?>
執(zhí)行上述程序時(shí),會(huì)產(chǎn)生以下結(jié)果:
Opened database successfully
Record updated successfully
ID = 2
NAME = Allen
ADDRESS = 25
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = 23
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = 25
SALARY = 65000
ID = 1
NAME = Paul
ADDRESS = 32
SALARY = 25000
Operation done successfully
刪除操作
以下PHP代碼顯示了如何使用DELETE語(yǔ)句刪除指定記錄,然后從COMPANY表中獲取并顯示剩余的記錄:
<?php
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=testdb";
$credentials = "user=postgres password=pass123";
$db = pg_connect( "$host $port $dbname $credentials" );
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
DELETE from COMPANY where ID=2;
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
exit;
} else {
echo "Record deleted successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = pg_query($db, $sql);
if(!$ret){
echo pg_last_error($db);
exit;
}
while($row = pg_fetch_row($ret)){
echo "ID = ". $row[0] . "\n";
echo "NAME = ". $row[1] ."\n";
echo "ADDRESS = ". $row[2] ."\n";
echo "SALARY = ".$row[4] ."\n\n";
}
echo "Operation done successfully\n";
pg_close($db);
?>
執(zhí)行上述程序時(shí),會(huì)產(chǎn)生以下結(jié)果:
Opened database successfully
Record deleted successfully
ID = 3
NAME = Teddy
ADDRESS = 23
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = 25
SALARY = 65000
ID = 1
NAME = Paul
ADDRESS = 32
SALARY = 25000
Operation done successfully
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫(kù)操作技巧大全》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php+js iframe實(shí)現(xiàn)上傳頭像界面無(wú)跳轉(zhuǎn)
這篇文章主要介紹了php+js實(shí)現(xiàn)的上傳頭像界面無(wú)跳轉(zhuǎn),示例中用到了iframe,需要的朋友可以參考下2014-04-04
靜態(tài)html文件執(zhí)行php語(yǔ)句的方法(推薦)
下面小編就為大家?guī)?lái)一篇靜態(tài)html文件執(zhí)行php語(yǔ)句的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-11-11
PHP數(shù)組基本用法與知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了PHP數(shù)組基本用法與知識(shí)點(diǎn),總結(jié)整理了PHP數(shù)組基本概念、用法、定義、訪問、刪除等相關(guān)操作技巧,需要的朋友可以參考下2020-06-06
php設(shè)計(jì)模式 Bridge (橋接模式)
將抽象部份與它實(shí)現(xiàn)部分分離,使用它們都可以有獨(dú)立的變化2011-06-06
PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析
這篇文章的內(nèi)容是PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析,需要的朋友可以參考下2015-10-10
PHP取二進(jìn)制文件頭快速判斷文件類型的實(shí)現(xiàn)代碼
以下代碼就展示了自己通過讀取文件頭信息來(lái)識(shí)別文件的真實(shí)類型。需要的朋友可以過來(lái)參考下2013-08-08
javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法
這篇文章主要介紹了javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法,實(shí)例分析javascript獲取客戶端時(shí)區(qū)及與服務(wù)器端php交互的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03

