跳到主要内容

使用 PDO 驱动连接 seekdb

本文将介绍如何使用 PDO 驱动连接 seekdb,实现创建表、插入数据等基本操作。 PDO,全称为 PHP Data Objects,是一个在 PHP 应用程序中用于提供数据访问抽象层的轻量级、一致性的接口。

前提条件

  • 您已安装 php 和 php-mysql。
  • 您已安装 seekdb。

操作步骤

  1. 检查并安装 php 和 php-mysql 环境。
  2. 新建 podtest.php 示例文件并配置数据库连接信息。
  3. 运行 podtest.php 文件并进行验证。

步骤一:检查并安装 php 和 php-mysql 环境

安装 PHP 和 php-mysql 环境,具体操作可参考 Ext 驱动连接 seekdb 章节 步骤一:检查并安装 php 和 php-mysql 环境。

步骤二:修改 podtest.php 文件中的数据库连接信息

以 Linux 环境为例,可以使用 vi podtest.php 或者 vim podtest.php 命令编辑 podtest.php 文件,修改文件中的数据库连接信息,确保与实际情况相符。

[root]# vim podtest.php
<?php
$servername = "172.30.xx.xxx";
$port = "2881";
$username = "root";
$password = "xxxxxxx";
$dbname = "test";

// 创建连接
try {
$conn = new PDO("mysql:host=$servername;port=$port;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch(PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>

其中:

  • $servername 指的是 seekdb 服务器地址。
  • $port 指的是 seekdb 服务器端口号。
  • $username 指的是 seekdb 用户名。
  • $password 指的是连接 seekdb 的密码。
  • $dbname 指的是要连接的数据库名称。

步骤三:运行 podtest.php 文件并进行验证

podtest.php 文件中故意填写错误的数据库名称,执行 php podtest.php 命令会返回如下报错信息:

[root]# php podtest.php
连接失败: SQLSTATE[42000] [1049] Unknown database 'test123'

填写正确的信息,提示连接成功:

[root]# php podtest.php
连接成功

测试建表及增删改查操作,示例如下:

[root]# vim podtest.php
<?php
$servername = "172.30.xxx.xxx"; // seekdb 服务器地址
$port = "2881"; // seekdb 服务器端口号
$username = "root"; // seekdb 用户名
$password = ""; // seekdb 连接密码
$dbname = "test"; // 要连接的数据库名称

// 创建连接
try {
$conn = new PDO("mysql:host=$servername;port=$port;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch(PDOException $e) {
echo "连接失败: " . $e->getMessage();
}

// 创建表
try {
$sql = "CREATE TABLE myguests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
$conn->exec($sql);
echo "表 myguests 创建成功";
} catch(PDOException $e) {
echo "创建表错误: " . $e->getMessage();
}

// 插入数据
try {
$sql = "INSERT INTO myguests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
$conn->exec($sql);
echo "新记录插入成功";
} catch(PDOException $e) {
echo "插入数据错误: " . $e->getMessage();
}

// 查询表
try{
$sql = "SELECT id, firstname, lastname FROM myguests";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// 输出数据
while($row = $stmt->fetch()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 结果";
}
} catch(PDOException $e) {
echo "查询表错误: " . $e->getMessage();
}

// 删除表
try {
$sql = "DROP TABLE myguests";
$conn->exec($sql);
echo "表 myguests 删除成功";
} catch(PDOException $e) {
echo "删除表错误: " . $e->getMessage();
}

// 关闭连接
$conn = null;
?>

执行成功,返回如下示例:

[root]# php podtest.php
连接成功表 myguests 创建成功新记录插入成功id: 1 - Name: John Doe<br>表 myguests 删除成功