php_pdo_pgsql 接口

1.简介

PHP* *数据对象(PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以将特定具体数据库的特性公开作为标准扩展函数。 注意不能单独使用 PDO 扩展执行任何数据库功能;必须使用一个具体数据库的 PDO 驱动程序来访问数据库服务。

PDO 提供了数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供数据库抽象;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

从 PHP 5.1 开始附带了 PDO,在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性,因此不能在较早版本的 PHP 上运行。

HighGo 数据库提供了对 PDO 特性的支持,并且支持连接认证方式为国密 SM3。

2.下载配置PHP 与 瀚高驱动

2.1.下载地址

链接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj

2.2.Windows 环境

  1. 前提条件,确保已安装php对应版本的 php_pdo_pgsql.dll 扩展。
  2. 下载对应版本的libpq.dll,上传位置为 PHP 安装根目录。
  3. 修改php.ini,去掉“extension=pdo_pgsql”前的分号。
  4. 终端执行 php -m ,查看输出列表是否有“pdo_pgsql”,如果有表示加载成功,没有表示加载失败

2.3.Linux 环境

  1. 下载对应版本驱动
  2. *上传服务器 /opt/highgolib 并解压 *
tar -zxvf v458_driver_for_php-7.4.33_x86_64.tar.gz
  1. 修改php.ini,引入扩展
Text
extension= /opt/highgolib/pdo_pgsql.so
  1. 终端执行 php -m ,查看输出列表是否有“pdo_pgsql”,如果有表示加载成功,没有表示加载失败

3.数据库操作

pdo_pgsql_test.php

<?php
// 数据库连接参数
$dbms='pgsql'; //数据库类型
$host='192.168.100.101'; //数据库IP
$dbName='pdodb'; //数据库名
$port=5866; //数据库端口
$user='sysdba'; //用户名
$pass='Qwer@1234'; //密码
$dsn="$dbms:host=$host;dbname=$dbName;port=$port";

// 创建PDO实例
try {

$pdo = new PDO($dsn, $user, $pass);
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "成功连接到数据库服务器!<br>";

} catch (PDOException $e) {
echo ("Error!: " . $e->getMessage() . "<br>");
}


try {
//创建表
$create_table_sql = "create table if not exists student(
id serial primary key,
name varchar(100),
age int,
birthday timestamp
)";
$create_table_result = $pdo->exec($create_table_sql);
echo "Table created successfully :" . $create_table_result . " <br>";

//插入数据
$insert_sql = 'INSERT INTO student(name, age, birthday) VALUES(:name, :age, :birthday)';
$stmt = $pdo->prepare($insert_sql);
// 绑定参数值
$name = 'tony';
$age=19;
$birthday = '2015-01-01 20:20:20';
$stmt->bindValue(':name', $name);
$stmt->bindValue(':age', $age);
$stmt->bindValue(':birthday', $birthday);

$stmt->execute();

//返回id
$id = $pdo->lastInsertId('student_id_seq');
echo '插入数据成功,用户id:' . $id . '<br>';

//查询数据
$stmt = $pdo->query('SELECT * FROM student');
$students = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$students[] = [
'id' => $row['id'],
'name' => $row['name'],
'age' => $row['age'],
'birthday' => $row['birthday']
];
}

} catch (PDOException $e) {
echo ("Error!: " . $e->getMessage() . "<br>");
}

?>