PHP中的数据库操作:PostgreSQL与MongoDB

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

介绍:为什么PHP开发者需要掌握不同数据库的操作

现代Web开发几乎离不开与数据库的交互。PHP作为最流行的服务器端语言之一,提供了灵活的工具来操作关系型(SQL)和文档型(NoSQL)系统。本文将详细解析如何连接并执行两个流行数据库的基本操作:PostgreSQL和MongoDB。您将学习如何使用现代PHP实践配置连接、执行查询并处理结果。



1. 通过PDO在PHP中操作PostgreSQL

PostgreSQL是一款强大的对象关系型数据库管理系统。在PHP中推荐使用PDO(PHP数据对象)扩展来操作它,该扩展为不同数据库提供统一接口,并通过预处理查询提升安全性。



1.1 连接数据库

首先请确保您的php.ini中已启用pdo_pgsql扩展。连接示例:

<?php$host = 'localhost';$dbname = 'my_database';$user = 'my_user';$password = 'my_password';

try { $dsn = "pgsql:host=$host;dbname=$dbname"; $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "连接成功建立";} catch (PDOException $e) { die("连接错误: " . $e->getMessage());}?>


1.2 执行查询(CRUD)

以users表为例介绍基本操作。

创建记录(INSERT):

<?php$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";$stmt = $pdo->prepare($sql);$stmt->execute([':name' => '伊万·伊万诺夫', ':email' => 'ivan@example.com']);echo "用户已添加,ID: " . $pdo->lastInsertId();?>


读取数据(SELECT):

<?php$stmt = $pdo->query("SELECT id, name, email FROM users");while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {    echo "ID: {$row['id']}, 姓名: {$row['name']}, 邮箱: {$row['email']}<br>";}?>


更新(UPDATE)和删除(DELETE):

<?php// 更新$sql = "UPDATE users SET email = :email WHERE id = :id";$stmt = $pdo->prepare($sql);$stmt->execute([':email' => 'newemail@example.com', ':id' => 1]);

// 删除$sql = "DELETE FROM users WHERE id = :id";$stmt = $pdo->prepare($sql);$stmt->execute([':id' => 1]);?>


2. 在PHP中操作MongoDB

MongoDB是领先的NoSQL数据库,以类似JSON的文档格式存储数据。在PHP中操作它需要使用官方mongodb扩展和MongoDB PHP Library库(通过Composer安装)。



2.1 安装与连接

通过Composer安装库:

composer require mongodb/mongodb

连接本地MongoDB服务器示例:

<?phprequire 'vendor/autoload.php';

$client = new MongoDB\\Client("mongodb://localhost:27017");$database = $client->selectDatabase('my_database');$collection = $database->selectCollection('users');echo "MongoDB连接已建立";?>


2.2 文档的CRUD操作

插入文档(INSERT):

<?php$insertResult = $collection->insertOne([    'name' => '玛丽亚·彼得罗娃',    'email' => 'maria@example.com',    'age' => 28]);echo "文档已添加,ID: " . $insertResult->getInsertedId();?>


查找文档(SELECT):

<?php$cursor = $collection->find(['age' => ['$gte' => 25]]);                

博客

书籍推荐