PHP连接PostgreSQL

yum install php-pgsql 

在开始使用PHP PostgreSQL接口,打开pg_hba.conf文件(在PostgreSQL安装目录),并添加下面一行:
  1. # IPv4 local connections:
  2. host    all         all         127.0.0.1/32          md5

使用start/restart启动Postgres服务器,它没有运行使用下面的命令:

  1. [[email protected]]# service postgresql restart
  2. Stopping postgresql service:                               [  OK  ]
  3. Starting postgresql service:                               [  OK  ]

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。

本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用。

安装

  1. 1

    首先,安装PostgreSQL客户端。

    sudo apt-get install postgresql-client

    然后,安装PostgreSQL服务器。

    sudo apt-get install postgresql

  2. 2

    正常情况下,安装完成后,PostgreSQL服务器会自动在本机的5432端口开启。

    如果还想安装图形管理界面,可以运行下面命令,但是本文不涉及这方面内容。

    sudo apt-get install pgadmin3

    END

添加新用户和新数据库

  1. 1

    初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户。

    下面,我们使用postgres用户,来生成其他用户和新数据库。好几种方法可以达到这个目的,这里介绍两种。

  2. 2

    第一种方法,使用PostgreSQL控制台。

    首先,新建一个Linux新用户,可以取你想要的名字,这里为dbuser。

    sudo adduser dbuser

    然后,切换到postgres用户。

    sudo su - postgres

    下一步,使用psql命令登录PostgreSQL控制台。

    psql

    这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为”postgres=#”,表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。

    第一件事是使用\password命令,为postgres用户设置一个密码。

    \password postgres

    第二件事是创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码。

    CREATE USER dbuser WITH PASSWORD ‘password‘;

    第三件事是创建用户数据库,这里为exampledb,并指定所有者为dbuser。

    CREATE DATABASE exampledb OWNER dbuser;

    第四件事是将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限。

    GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;

    最后,使用\q命令退出控制台(也可以直接按ctrl+D)。

    \q

  3. 3

    第二种方法,使用shell命令行。

    添加新用户和新数据库,除了在PostgreSQL控制台内,还可以在shell命令行下完成。这是因为PostgreSQL提供了命令行程序createuser和createdb。还是以新建用户dbuser和数据库exampledb为例。

    首先,创建数据库用户dbuser,并指定其为超级用户。

    sudo -u postgres createuser --superuser dbuser

    然后,登录数据库控制台,设置dbuser用户的密码,完成后退出控制台。

    sudo -u postgres psql

    \password dbuser

    \q

    接着,在shell命令行下,创建数据库exampledb,并指定所有者为dbuser。

    sudo -u postgres createdb -O dbuser exampledb

    END

登录数据库

  1. 1

    添加新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。

    psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

    上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。

    输入上面命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。

    psql 命令存在简写形式。如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。举例来说,我的 Linux系统用户名为ruanyf,且PostgreSQL数据库存在同名用户,则我以ruanyf身份登录Linux系统后,可以直接使用下面的命令 登录数据库,且不需要密码。

    psql exampledb

    此时,如果PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。比如,假定存在一个叫做ruanyf的数据库,则直接键入psql就可以登录该数据库。

    psql

    另外,如果要恢复外部数据,可以使用下面的命令。

    psql exampledb < exampledb.sql

    END

控制台命令

  1. 1

    除了前面已经用到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供一系列其他命令。

    \h:查看SQL命令的解释,比如\h select。

    \?:查看psql命令列表。\l:列出所有数据库。

    \c [database_name]:连接其他数据库。

    \d:列出当前数据库的所有表格。

    \d [table_name]:列出某一张表格的结构。

    \du:列出所有用户。

    \e:打开文本编辑器。

    \conninfo:列出当前数据库和连接的信息。

    END

数据库操作

1

基本的数据库操作,就是使用一般的SQL语言。

# 创建新表

CREATE TABLE usertbl(name VARCHAR(20), signupdate DATE);

# 插入数据

INSERT INTO usertbl(name, signupdate) VALUES(‘张三‘, ‘2013-12-22‘);

# 选择记录

SELECT * FROM user_tbl;

# 更新数据

UPDATE user_tbl set name = ‘李四‘ WHERE name = ‘张三‘;

# 删除记录

DELETE FROM user_tbl WHERE name = ‘李四‘ ;

# 添加栏位

ALTER TABLE user_tbl ADD email VARCHAR(40);

# 更新结构

ALTER TABLE usertbl ALTER COLUMN signupdate SET NOT NULL;

# 更名栏位

ALTER TABLE usertbl RENAME COLUMN signupdate TO signup;

# 删除栏位

ALTER TABLE user_tbl DROP COLUMN email;

# 表格更名

ALTER TABLE usertbl RENAME TO backuptbl;

# 删除表格

DROP TABLE IF EXISTS backup_tbl;

<?php
       $host        = "host=localhost";
       $port        = "port=5432";
       $dbname      = "dbname=testdb";
       $credentials = "user=postgres password=123456";
     
       $db = pg_connect( "$host $port $dbname $credentials"  );
       if(!$db){
          echo "Error : Unable to open database\n";
       } else {
          echo "Opened database successfully\n";
       }
    ?>

安装

PostgreSQL的扩展是默认启用的最新版本的PHP5.3.x.但是它可能通过在编译时加上--without-pgsql选项禁用。但仍然可以使用yum命令安装PHP的PostgreSQL的接口:

  1. yum install php-pgsql

在开始使用PHP PostgreSQL接口,打开pg_hba.conf文件(在PostgreSQL安装目录),并添加下面一行:

  1. # IPv4 local connections:
  2. host    all         all         127.0.0.1/32          md5

使用start/restart启动Postgres服务器,它没有运行使用下面的命令:

  1. [[email protected]]# service postgresql restart
  2. Stopping postgresql service:                               [  OK  ]
  3. Starting postgresql service:                               [  OK  ]

Windows用户必须启用php_pgsql.dll为了使用这个扩展。这个DLL包含带Windows分布在最新版本PHP5.3.x

有关详细的安装说明,请查看我们的PHP教程和其官方网站上。

PHP 接口APIs

以下是重要的PHP程序,可以连接使用PostgreSQL数据库PHP程序。如果正在寻找一个更复杂的应用程序,那么可以看看到PHP官方文件。

Windows用户必须启用php_pgsql.dll为了使用这个扩展。这个DLL包含带Windows分布在最新版本PHP5.3.x

有关详细的安装说明,请查看我们的PHP教程和其官方网站上。

PHP 接口APIs

以下是重要的PHP程序,可以连接使用PostgreSQL数据库PHP程序。如果正在寻找一个更复杂的应用程序,那么可以看看到PHP官方文件。

连接到数据库

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

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. ?>

现在让我们运行上面的程序来打开数据库testdb,如果成功打开数据库,然后它会给下面的消息:

  1. Opened database successfully

创建表

下面的PHP程序将使用以前创建的数据库中创建一个表:

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. $sql =<<<EOF
  13. CREATE TABLE COMPANY
  14. (ID INT PRIMARY KEY     NOT NULL,
  15. NAME           TEXT    NOT NULL,
  16. AGE            INT     NOT NULL,
  17. ADDRESS        CHAR(50),
  18. SALARY         REAL);
  19. EOF;
  20. $ret = pg_query($db, $sql);
  21. if(!$ret){
  22. echo pg_last_error($db);
  23. } else {
  24. echo "Table created successfully\n";
  25. }
  26. pg_close($db);
  27. ?>

上述程序执行时,它会创建表COMPANY在数据库testdb 中 ,它会显示以下消息:

  1. Opened database successfully
  2. Table created successfully

INSERT操作

PHP程序,显示我们如何创建表COMPANY 在上面的例子中,创建表中的记录:

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. $sql =<<<EOF
  13. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  14. VALUES (1, ‘Paul‘, 32, ‘California‘, 20000.00 );
  15. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  16. VALUES (2, ‘Allen‘, 25, ‘Texas‘, 15000.00 );
  17. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  18. VALUES (3, ‘Teddy‘, 23, ‘Norway‘, 20000.00 );
  19. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  20. VALUES (4, ‘Mark‘, 25, ‘Rich-Mond ‘, 65000.00 );
  21. EOF;
  22. $ret = pg_query($db, $sql);
  23. if(!$ret){
  24. echo pg_last_error($db);
  25. } else {
  26. echo "Records created successfully\n";
  27. }
  28. pg_close($db);
  29. ?>

上述程序执行时,它会创建COMPANY表中的记录,并会显示以下两行:

  1. Opened database successfully
  2. Records created successfully

SELECT 操作

PHP程序表明我们如何获取并显示COMPANY 在上面的例子中创建表的记录:

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. $sql =<<<EOF
  13. SELECT * from COMPANY;
  14. EOF;
  15. $ret = pg_query($db, $sql);
  16. if(!$ret){
  17. echo pg_last_error($db);
  18. exit;
  19. }
  20. while($row = pg_fetch_row($ret)){
  21. echo "ID = ". $row[0] . "\n";
  22. echo "NAME = ". $row[1] ."\n";
  23. echo "ADDRESS = ". $row[2] ."\n";
  24. echo "SALARY =  ".$row[4] ."\n\n";
  25. }
  26. echo "Operation done successfully\n";
  27. pg_close($db);
  28. ?>

当上述程序执行时,它会产生以下结果。字段返回序列中,它们被用来创建表的同时保持注意。

  1. Opened database successfully
  2. ID = 1
  3. NAME = Paul
  4. ADDRESS = California
  5. SALARY =  20000
  6. ID = 2
  7. NAME = Allen
  8. ADDRESS = Texas
  9. SALARY =  15000
  10. ID = 3
  11. NAME = Teddy
  12. ADDRESS = Norway
  13. SALARY =  20000
  14. ID = 4
  15. NAME = Mark
  16. ADDRESS = Rich-Mond
  17. SALARY =  65000
  18. Operation done successfully

UPDATE 操作

下面的PHP代码显示了如何我们可以使用UPDATE语句来更新任何记录,然后获取并显示更新的记录,从COMPANY 表:

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. $sql =<<<EOF
  13. UPDATE COMPANY set SALARY = 25000.00 where ID=1;
  14. EOF;
  15. $ret = pg_query($db, $sql);
  16. if(!$ret){
  17. echo pg_last_error($db);
  18. exit;
  19. } else {
  20. echo "Record updated successfully\n";
  21. }
  22. $sql =<<<EOF
  23. SELECT * from COMPANY;
  24. EOF;
  25. $ret = pg_query($db, $sql);
  26. if(!$ret){
  27. echo pg_last_error($db);
  28. exit;
  29. }
  30. while($row = pg_fetch_row($ret)){
  31. echo "ID = ". $row[0] . "\n";
  32. echo "NAME = ". $row[1] ."\n";
  33. echo "ADDRESS = ". $row[2] ."\n";
  34. echo "SALARY =  ".$row[4] ."\n\n";
  35. }
  36. echo "Operation done successfully\n";
  37. pg_close($db);
  38. ?>

当上述程序执行时,它会产生以下结果:

  1. Opened database successfully
  2. Record updated successfully
  3. ID = 2
  4. NAME = Allen
  5. ADDRESS = 25
  6. SALARY =  15000
  7. ID = 3
  8. NAME = Teddy
  9. ADDRESS = 23
  10. SALARY =  20000
  11. ID = 4
  12. NAME = Mark
  13. ADDRESS = 25
  14. SALARY =  65000
  15. ID = 1
  16. NAME = Paul
  17. ADDRESS = 32
  18. SALARY =  25000
  19. Operation done successfully

DELETE 操作

下面的PHP代码,表明我们如何能够使用DELETE语句删除任何记录,然后获取并显示COMPANY 表剩余的记录:

  1. <?php
  2. $host        = "host=127.0.0.1";
  3. $port        = "port=5432";
  4. $dbname      = "dbname=testdb";
  5. $credentials = "user=postgres password=pass123";
  6. $db = pg_connect( "$host $port $dbname $credentials"  );
  7. if(!$db){
  8. echo "Error : Unable to open database\n";
  9. } else {
  10. echo "Opened database successfully\n";
  11. }
  12. $sql =<<<EOF
  13. DELETE from COMPANY where ID=2;
  14. EOF;
  15. $ret = pg_query($db, $sql);
  16. if(!$ret){
  17. echo pg_last_error($db);
  18. exit;
  19. } else {
  20. echo "Record deleted successfully\n";
  21. }
  22. $sql =<<<EOF
  23. SELECT * from COMPANY;
  24. EOF;
  25. $ret = pg_query($db, $sql);
  26. if(!$ret){
  27. echo pg_last_error($db);
  28. exit;
  29. }
  30. while($row = pg_fetch_row($ret)){
  31. echo "ID = ". $row[0] . "\n";
  32. echo "NAME = ". $row[1] ."\n";
  33. echo "ADDRESS = ". $row[2] ."\n";
  34. echo "SALARY =  ".$row[4] ."\n\n";
  35. }
  36. echo "Operation done successfully\n";
  37. pg_close($db);
  38. ?>

当上述程序执行时,它会产生以下结果:

    1. Opened database successfully
    2. Record deleted successfully
    3. ID = 3
    4. NAME = Teddy
    5. ADDRESS = 23
    6. SALARY =  20000
    7. ID = 4
    8. NAME = Mark
    9. ADDRESS = 25
    10. SALARY =  65000
    11. ID = 1
    12. NAME = Paul
    13. ADDRESS = 32
    14. SALARY =  25000
    15. Operation done successfully

PHP连接PostgreSQL

时间: 2024-08-26 22:09:59

PHP连接PostgreSQL的相关文章

kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题................................ 1 前言............................................................................................................... 1

metasploit连接postgresql数据库

metasploit 连接postgresql数据库: 1.打开postgresql服务:services postgresql start 2.进入postgresql中,设置默认用户密码.创建新用户.设置新用户权限.创建数据库: sudo -u postgres psql#进入postgresql默认的用户 alter user postgres with password '密码'; #设置默认用户的登录密码 create user '用户名' wiht password '密码' noc

kali linux 系列教程之metasploit 连接postgresql

前言 由于kali linux的版本不同,默认情况下对metasploit和postgresql的配置也不相同,导致我们启动metasploit后连接postgresql数据库会遇到无法连接的情况.下面就三种情况,简单的给大家描述一下,以及遇到问题的解决方案. 理想状态 理想情况下,只需要两步即可. 启动postgresql service postgresql start 启动mestasploit service metasploit start 在metasploit中输入db_statu

视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时间录制,今天我兑现了给朋友们的承诺.. 本次视频教程的目录为 视频.代码.资料,其中视频有4段,资料是我收集的相关资料.. 视频下载地址:http://pan.baidu.com/s/1c05sysC 希望大家多多支持... 郝喜路 2014年6月8日 11:11:02   http://haoxilu.cn

KaLi 之 Metasploit 连接 postgresql 数据库

KaLi 连接 postgresql 数据库 查看 postgresql 是否启动,没有启动的话,使用 service postgresql start 命令启动.启动后查看是否启动成功,端口是 5432,如图所示: 启动 metasploit 后,查看 postgresql 的连接状态,命令是:db_status,如出现如下,证明没有连接. 查看 postgresql 的账户密码,地址是:  cat /opt/metasploit/apps/pro/ui/config/database.yml

python连接postgresql数据库

python可以通过第三方模块连接postgresql. 比较有名的有psycopg2  和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get install python3-psycopg2 创建一个test.py文件 import psycopg2 # 数据库连接参数 conn = psycopg2.connect(database="test1", user="jm", password="12

ubuntu中pgAdminIII无法连接postgreSQL

小笔记 修改了postgresql.conf文件和pg_hba.conf文件,再进行服务重启/etc/init.d/postgresql restart依然不能连接postgreSQL; 之后重新修改了密码[密码其实没有变],神奇的是竟然连接成功: postgres=# ALTER USER postgres WITH PASSWORD '×××';

BT5之Metasploit[MSF]连接postgresql数据库

1,先查看postgresql的端口,默认是自动开启的,端口7337 .   [email protected]:~# netstat -tnpl |grep postgres tcp        0      0 127.0.0.1:7337          0.0.0.0:*               LISTEN      1100/postgres tcp6       0      0 ::1:7337                :::*                   

rails连接postgresql错误:psql: 致命错误: 用户 &quot;postgres&quot; Ident 认证失败

psql: 致命错误:  用户 "postgres" Ident 认证失败 1安装好postgresql数据库后需要初始化及一些配置rails项目才能连接postgresql 安装好postgresql数据后(yum命令直接安装的) 第一步:初始化数据库 #service postgresql initdb (说明:初始化后默认postgresql数据库有一个默认的用户postgres(密码为空)和一个默认创建的postgres数据库) 第二步:启动数据库 #service postg

PHP连接PostgreSQL连接问题

/var/lib/pgsql/data/pg_hba.conf CentOS 6.3下PostgreSQL 的安装与配置 http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html postgresAdmin3 http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html http://jingyan.baidu.com/article/3ea51489ec3cb452e