PostgreSQL - 连接PHP

PostgreSQL - 连接PHP 首页 / PostgreSQL入门教程 / PostgreSQL - 连接PHP

安装扩展

最新版本的PHP默认启用PostgreSQL扩展,可以在编译时使用-without-pgsql 禁用它。仍然可以使用yum命令安装PHP -PostgreSQL接口-

yum install php-pgsql

在开始使用PHP PostgreSQL界面之前,请在PostgreSQL安装目录中找到 pg_hba.conf 文件,并添加以下行-

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

如果未运行postgres服务器,则可以使用以下命令启动/重新启动它:

[root@host]# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Starting postgresql service:                               [  OK  ]

Windows用户必须启用php_pgsql.dll才能使用此扩展名。 Windows发行版的PHP 5.3.x中包含此DLL。

有关详细的安装说明,请查看无涯教程的PHP教程及其官方网站。

PHP接口API

以下是重要的PHP示例程,可以满足您从PHP程序使用PostgreSQL数据库的要求。如果您正在寻找更复杂的应用程序,则可以查阅PHP官方文档。

S. No.API & 描述
1

resource pg_connect(string $connection_string [,int $connect_type])

这将打开与connection_string指定的PostgreSQL数据库的连接。

如果将PGSQL_CONNECT_FORCE_NEW作为connect_type传递,那么即使第二次调用pg_connect()都与现有连接相同,也会创建一个新连接。

2

bool pg_connection_reset(resource $connection)

将重置连接。这对于错误恢复很有用。成功返回TRUE,失败返回FALSE。

3

int pg_connection_status(resource $connection)

返回指定连接的状态。返回PGSQL_CONNECTION_OK或PGSQL_CONNECTION_BAD。

4

string pg_dbname([resource $connection])

返回给定PostgreSQL连接资源的数据库名称。

5

resource pg_prepare([resource $connection],string $stmtname,string $query)

这将提交一个使用给定参数创建准备好的语句的请求,并等待完成。

6

resource pg_execute([resource $connection],string $stmtname,array$params)

该示例程发送一个请求,以执行具有给定参数的准备好的语句,并等待输出。

7

resource pg_query([resource $connection],string $query)

在指定的数据库连接上执行查询。

8

array pg_fetch_row(resource $result [,int $row])

从与指定输出资源关联的输出中提取一行数据。

9

array pg_fetch_all(resource $result)

无涯教程网

返回一个数组,其中包含输出资源中的所有行(记录)。

10

int pg_affected_rows(resource $result)

返回受INSERT,UPDATE和DELETE查询影响的行数。

11

int pg_num_rows(resource $result)

返回PostgreSQL输出资源中的行数,如SELECT语句返回的行数。

12

bool pg_close([resource $connection])

关闭与给定连接资源关联的PostgreSQL数据库的非持久连接。

13

string pg_last_error([resource $connection])

返回给定连接的最后一条错误消息。

14

string pg_escape_literal([resource $connection],string $data

转义文字以插入文本字段。

15

string pg_escape_string([resource $connection],string $data

转义用于查询数据库的字符串。

连接到数据库

以下PHP代码显示了如何连接到本地计算机上的现有数据库,最后将返回一个数据库连接对象。

<?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";
   }
?>

现在,让无涯教程运行上面给出的程序来打开数据库 testdb :如果数据库成功打开,则将显示以下消息-

Opened database successfully

创建表

以下PHP程序将用于在先前创建的数据库中创建表-

<?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);
?>

执行上述给定程序后,它将在 testdb 中创建COMPANY表,并将显示以下消息-

Opened database successfully
Table created successfully

插入操作

以下PHP程序显示了如何在上示例中创建的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
      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, 'Learnfk', 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);
?>

执行上述给定程序时,它将在COMPANY表中创建给定记录,并显示以下两行-

Opened database successfully
Records created successfully

选择操作

以下PHP程序说明了如何从上示例中创建的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);
?>

执行上述给定程序时,将产生以下输出。请注意,字段以创建表时使用的顺序返回。

Opened database successfully
ID=1
NAME=Paul
ADDRESS=California
SALARY= 20000

ID=2
NAME=Learnfk
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语句更新任何记录,然后从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);
?>

执行上面给定的程序时,将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/postgresql/postgresql-php.html

来源:LearnFk无涯教程网

Opened database successfully
Record updated successfully
ID=2
NAME=Learnfk
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语句删除任何记录,然后从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);
?>

执行上面给定的程序时,将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/postgresql/postgresql-php.html

来源:LearnFk无涯教程网

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构核心20讲 -〔杨波〕

Java并发编程实战 -〔王宝令〕

从0开始做增长 -〔刘津〕

代码之丑 -〔郑晔〕

手把手教你玩音乐 -〔邓柯〕

程序员的个人财富课 -〔王喆〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

遗留系统现代化实战 -〔姚琪琳〕

手把手教你落地DDD -〔钟敬〕

好记忆不如烂笔头。留下您的足迹吧 :)