PHP数据库操作入门:PostgreSQL与MongoDB

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

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

开始课程

引言:为什么PHP和数据库是强大的组合

\n\n

任何现代网站或应用程序都不只是页面的集合,而是一个存储和处理数据的动态系统。PHP作为最流行的Web开发语言之一,提供了强大的数据库操作工具。本文将介绍两种关键的数据库管理系统(DBMS):关系型PostgreSQL和面向文档的MongoDB。

\n\n

对于初学者来说,在两者之间做出选择可能看起来很困难,但实际上它们各自解决不同的问题。PostgreSQL是结构化数据的可靠SQL标准,而MongoDB是用于快速原型开发和处理类似JSON文档的灵活NoSQL系统。我们将展示如何从PHP连接到这两种数据库,执行基本操作(CRUD),并提供实用建议。

\n\n

1. 环境准备:需要安装什么

\n\n

在编写代码之前,请确保已安装所需的PHP扩展。操作PostgreSQL需要pdo_pgsql扩展,操作MongoDB需要mongodb扩展(通过PECL或composer安装)。

\n\n

安装扩展

\n
    \n
  • PostgreSQL:在php.ini中取消注释extension=pdo_pgsql这一行,或通过包管理器安装(例如sudo apt install php-pgsql)。
  • \n
  • MongoDB:使用Composer:composer require mongodb/mongodb — 这将安装官方库。
  • \n
\n\n

安装后,通过执行php -m | grep -i pgsql和php -m | grep -i mongodb检查扩展是否已激活。

\n\n

2. PostgreSQL与PHP:可靠性与SQL

\n\n

PostgreSQL是一个强大的关系型数据库管理系统,支持ACID事务、复杂查询和JSON字段。在PHP中操作它,最方便的方法是使用PDO(PHP数据对象)——一个通用接口。

\n\n

连接到PostgreSQL

\n

创建文件connect_pgsql.php:

\n
<?php\n$host = 'localhost';\n$dbname = 'testdb';\n$user = 'postgres';\n$pass = 'password';\n\ntry {\n    $pdo = new PDO("pgsql:host=$host;dbname=$dbname", $user, $pass);\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n    echo "PostgreSQL连接成功!";\n} catch (PDOException $e) {\n    die("连接错误:" . $e->getMessage());\n}\n?>
\n\n

以users表为例的CRUD操作

\n

创建表并执行基本查询。

\n\n

创建表

\n
<?php\n$sql = "CREATE TABLE IF NOT EXISTS users (\n    id SERIAL PRIMARY KEY,\n    name VARCHAR(100) NOT NULL,\n    email VARCHAR(150) UNIQUE NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n)";\n$pdo->exec($sql);\necho "表已创建。";\n?>
\n\n

插入数据(CREATE)

\n
<?php\n$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");\n$stmt->execute(['name' => '伊万·彼得罗夫', 'email' => 'ivan@example.com']);\necho "用户已添加。";\n?>
\n\n

读取数据(READ)

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

更新(UPDATE)和删除(DELETE)

\n
<?php\n// 更新\n$stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");\n$stmt->execute(['name' => '彼得·西多罗夫', 'id' => 1]);\n\n// 删除\n$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");\n$stmt->execute(['id' => 2]);\n?>
\n\n

提示:始终使用预处理语句(prepare)来防止SQL注入。

\n\n

3. MongoDB与PHP:无模式的灵活性

\n\n

MongoDB以BSON(二进制JSON)文档的形式存储数据。

博客

书籍推荐