PHP连接数据库执行语句的正确写法是什么?详细步骤和示例?
- 数据库
- 2025-11-30
- 5
在PHP中连接数据库并执行SQL语句是一个常见的任务,以下是详细的过程和示例代码。
连接数据库
你需要选择一个数据库服务器,如MySQL,以下是如何使用PHP连接到MySQL数据库的步骤:
-
引入PDO类:PHP Data Objects(PDO)是一个数据访问抽象层(DBAL),它允许你使用相同的接口访问多种数据库系统。

-
设置DSN(数据源名称):DSN包含了数据库类型、服务器地址、数据库名、用户名和密码等信息。
-
创建PDO实例:使用DSN和数据库连接参数创建PDO实例。
-
设置错误模式:设置PDO的错误模式,以便在发生错误时获取错误信息。

- 使用预处理语句(prepare)和绑定参数(bindParam)可以防止SQL载入攻破。
- 在执行查询后,使用fetch方法获取结果集。
- 使用execute方法执行SQL语句。
以下是连接MySQL数据库的示例代码:
<?php $host = 'localhost'; // 数据库服务器地址 $dbname = 'test'; // 数据库名 $username = 'root'; // 数据库用户名 $password = ''; // 数据库密码 try { $dsn = "mysql:host=$host;dbname=$dbname;charset=utf8"; $pdo = new PDO($dsn, $username, $password); $pdo>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("数据库连接失败: " . $e>getMessage()); } ?>
执行SQL语句
连接到数据库后,你可以执行SQL语句,以下是一些常用的SQL语句和如何在PHP中执行它们:

查询(SELECT)
$query = "SELECT * FROM users WHERE age > 18"; $stmt = $pdo>query($query); while ($row = $stmt>fetch(PDO::FETCH_ASSOC)) { echo $row['name'] . "<br>"; }
插入(INSERT)
$name = 'John Doe'; $email = 'john@example.com'; $stmt = $pdo>prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); $stmt>bindParam(':name', $name); $stmt>bindParam(':email', $email); $stmt>execute();
更新(UPDATE)
$newEmail = 'john.doe@example.com'; $stmt = $pdo>prepare("UPDATE users SET email = :email WHERE name = :name"); $stmt>bindParam(':email', $newEmail); $stmt>bindParam(':name', $name); $stmt>execute();
删除(DELETE)
$stmt = $pdo>prepare("DELETE FROM users WHERE name = :name"); $stmt>bindParam(':name', $name); $stmt>execute();
注意事项
表格
下面是一个表格,归纳了上述内容:
| SQL语句 | PHP代码 |
|---|---|
| SELECT | $stmt = $pdo>query($query); while ($row = $stmt>fetch(PDO::FETCH_ASSOC)) { ... } |
| INSERT | $stmt = $pdo>prepare("INSERT INTO table (column1, column2) VALUES (:value1, :value2)"); $stmt>bindParam(':value1', $value1); $stmt>bindParam(':value2', $value2); $stmt>execute(); |
| UPDATE | $stmt = $pdo>prepare("UPDATE table SET column1 = :value1 WHERE column2 = :value2"); $stmt>bindParam(':value1', $value1); $stmt>bindParam(':value2', $value2); $stmt>execute(); |
| DELETE | $stmt = $pdo>prepare("DELETE FROM table WHERE column1 = :value1"); $stmt>bindParam(':value1', $value1); $stmt>execute(); |
FAQs
Q1:如何处理数据库连接错误?
A1:在尝试连接数据库时,使用trycatch语句捕获PDOException,如果捕获到异常,可以输出错误信息或进行其他错误处理。
Q2:如何避免SQL载入攻破?
A2:使用预处理语句和绑定参数可以避免SQL载入攻破,不要直接将用户输入插入到SQL语句中,而是使用参数化查询。