PostgreSQL 程序連接接口

postgres.jpg

1. PHP 連接 PostgreSQL 數(shù)據(jù)庫(kù)

PostgreSQL 擴(kuò)展在默認(rèn)情況下在最新版本的 <strong style="color: red;">PHP 5.3.x</strong> 中是啟用的雷绢。 可以在編譯時(shí)使用<strong style="color: red;">--without-pgsql</strong>來(lái)禁用它。仍然可以使用<strong style="color: red;">yum</strong>命令來(lái)安裝 PHP-PostgreSQL 接口:

yum install php-pgsql

在開(kāi)始使用 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ā)行版中撒强。

2. 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)行上面的程序打開(kāi)數(shù)據(jù)庫(kù): testdb,如果成功打開(kāi)數(shù)據(jù)庫(kù)連接,那么它將給出以下消息:

Opened database successfully

3. 創(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

4. 插入操作

以下 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

5. 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

6. 更新操作

以下 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

7. 刪除操作

以下 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萨驶,一起剝皮案震驚了整個(gè)濱河市歉摧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腔呜,老刑警劉巖叁温,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異核畴,居然都是意外死亡膝但,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)谤草,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)跟束,“玉大人,你說(shuō)我怎么就攤上這事丑孩〖窖纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵温学,是天一觀的道長(zhǎng)花鹅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)枫浙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任古拴,我火速辦了婚禮箩帚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黄痪。我一直安慰自己紧帕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著是嗜,像睡著了一般愈案。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹅搪,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天站绪,我揣著相機(jī)與錄音,去河邊找鬼丽柿。 笑死恢准,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甫题。 我是一名探鬼主播馁筐,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坠非!你這毒婦竟也來(lái)了敏沉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤炎码,失蹤者是張志新(化名)和其女友劉穎盟迟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辅肾,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡队萤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矫钓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片要尔。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖新娜,靈堂內(nèi)的尸體忽然破棺而出赵辕,到底是詐尸還是另有隱情,我是刑警寧澤概龄,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布还惠,位于F島的核電站,受9級(jí)特大地震影響私杜,放射性物質(zhì)發(fā)生泄漏蚕键。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一衰粹、第九天 我趴在偏房一處隱蔽的房頂上張望锣光。 院中可真熱鬧,春花似錦铝耻、人聲如沸誊爹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)频丘。三九已至办成,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搂漠,已是汗流浹背迂卢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留状答,地道東北人冷守。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惊科,于是被迫代替她去往敵國(guó)和親拍摇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理馆截,服務(wù)發(fā)現(xiàn)充活,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當(dāng)給sq...
    xuningbo閱讀 10,301評(píng)論 2 22
  • sqlmap用戶手冊(cè) 說(shuō)明:本文為轉(zhuǎn)載蜡娶,對(duì)原文中一些明顯的拼寫(xiě)錯(cuò)誤進(jìn)行修正混卵,并標(biāo)注對(duì)自己有用的信息。 ======...
    wind_飄閱讀 2,044評(píng)論 0 5
  • 《東籬詩(shī)鈔》 (其八) 《焚》 灰燼飛滿半個(gè)天幕 模糊了監(jiān)護(hù)者單薄的身影 幾天之內(nèi) 產(chǎn)出便被收集完畢 預(yù)示著作物們...
    瓦爾登野人閱讀 211評(píng)論 0 0
  • 落木蕭蕭生晚涼窖张,隴頭衰草映斜陽(yáng)幕随。平湖無(wú)意橫山影,梅笛多情斷客腸宿接。 風(fēng)滿袖赘淮,雁成行,東籬又見(jiàn)菊花黃睦霎。十年形跡十年夢(mèng)梢卸,...
    巫小皇閱讀 233評(píng)論 1 2