要使用PHP连接达梦(DM)数据库并实现增删改查(CRUD)功能,首先需要安装达梦数据库的ODBC驱动或PDO驱动,然后在PHP中配置连接并编写相关的SQL操作代码。

1. 安装达梦数据库驱动

1.1 安装达梦数据库ODBC驱动

  1. 下载ODBC驱动
    达梦官网下载适用于你操作系统的ODBC驱动,并安装。
  2. 配置ODBC数据源
    打开ODBC数据源管理器,添加一个新的系统DSN,选择”DM ODBC Driver”,并配置连接信息(如服务器地址、端口、用户名和密码)。

1.2 安装达梦数据库PDO扩展(可选)

如果你偏好使用PDO连接方式,可以下载并安装达梦的PDO驱动扩展。

# 在PHP环境中启用达梦PDO扩展(在php.ini中添加)
extension=php_pdo_dm.so

2. PHP连接达梦数据库

2.1 使用ODBC连接

<?php
// 配置数据库连接参数
$dsn = 'odbc:DM_DSN'; // DSN名称在ODBC数据源中配置
$username = 'SYSDBA';
$password = 'SYSDBA_PASSWORD';

try {
    // 创建数据库连接
    $dbh = new PDO($dsn, $username, $password);

    // 设置错误模式为异常
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "连接成功!";
} catch (PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
?>

2.2 使用PDO连接

<?php
$host = '127.0.0.1'; // 达梦数据库服务器地址
$port = '5236';      // 达梦数据库端口(默认5236)
$dbname = 'TESTDB';  // 数据库名称
$username = 'SYSDBA';
$password = 'SYSDBA_PASSWORD';

try {
    // 创建PDO连接字符串
    $dsn = "dm:host=$host;port=$port;dbname=$dbname";
    $dbh = new PDO($dsn, $username, $password);

    // 设置错误模式为异常
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "连接成功!";
} catch (PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
?>

3. 实现增删改查(CRUD)功能

3.1 插入数据(Create)

<?php
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);

$username = 'testuser';
$email = 'testuser@example.com';

if ($stmt->execute()) {
    echo "数据插入成功!";
} else {
    echo "数据插入失败!";
}
?>

3.2 查询数据(Read)

<?php
$sql = "SELECT * FROM users";
$stmt = $dbh->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($results as $row) {
    echo "ID: " . $row['id'] . " - 用户名: " . $row['username'] . " - 邮箱: " . $row['email'] . "<br>";
}
?>

3.3 更新数据(Update)

<?php
$sql = "UPDATE users SET email = :email WHERE username = :username";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);

$username = 'testuser';
$email = 'newemail@example.com';

if ($stmt->execute()) {
    echo "数据更新成功!";
} else {
    echo "数据更新失败!";
}
?>

3.4 删除数据(Delete)

<?php
$sql = "DELETE FROM users WHERE username = :username";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);

$username = 'testuser';

if ($stmt->execute()) {
    echo "数据删除成功!";
} else {
    echo "数据删除失败!";
}
?>

4. 常见问题和调试

4.1 无法连接数据库

  • 检查DSN配置
    确保ODBC数据源名称(DSN)配置正确。
  • 检查达梦数据库服务状态
    使用命令dmserver status来检查服务是否正常运行。

4.2 错误日志

  • PHP会在error_log中记录连接错误,查看日志有助于定位问题。

4.3 字符编码问题

  • 默认情况下,达梦数据库使用UTF-8编码。在PHP中操作时,也需要保证PHP连接时使用相同编码。

5. 总结

通过ODBC或PDO驱动,PHP可以轻松地连接到达梦数据库并进行增删改查操作。PDO的使用推荐较多,因为它提供了参数化查询功能,有效防止SQL注入。

希望这个指导能帮助你顺利实现PHP连接达梦数据库的功能!如果有其他问题,欢迎继续咨询。