PHP调用SQL数据库代码怎么写?新手入门教程详解

PHP调用SQL数据库的代码编写是Web开发中的常见任务,通常涉及连接数据库、执行查询、处理结果以及关闭连接等步骤,以下是详细的实现方法和代码示例,涵盖MySQL和MySQLi两种扩展的使用方式。

使用MySQL扩展(已废弃,不推荐)

MySQL扩展是PHP早期提供的数据库操作接口,但由于存在安全性和功能缺陷,自PHP 7.0起已被移除,仅适用于旧项目维护:

php调用sql数据库代码怎么写

<?php
// 1. 连接数据库
$conn = mysql_connect("localhost", "username", "password");
if (!$conn) {
    die("连接失败: " . mysql_error());
}
mysql_select_db("database_name", $conn);
// 2. 执行查询
$sql = "SELECT * FROM users";
$result = mysql_query($sql, $conn);
// 3. 处理结果
while ($row = mysql_fetch_assoc($result)) {
    echo "ID: " . $row['id'] . " Name: " . $row['name'] . "<br>";
}
// 4. 关闭连接
mysql_close($conn);
?>

使用MySQLi扩展(推荐)

MySQLi(MySQL Improved)是MySQL的增强版,支持面向过程和面向对象两种方式,功能更完善。

面向过程方式

<?php
// 1. 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database_name");
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
// 2. 执行查询
$sql = "SELECT id, name FROM users WHERE status = 'active'";
$result = mysqli_query($conn, $sql);
// 3. 处理结果
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
    }
} else {
    echo "0 结果";
}
// 4. 关闭连接
mysqli_close($conn);
?>

面向对象方式

<?php
// 1. 创建连接
$conn = new mysqli("localhost", "username", "password", "database_name");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
// 2. 执行查询
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);
// 3. 处理结果
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
    }
} else {
    echo "0 结果";
}
// 4. 关闭连接
$conn->close();
?>

预处理语句(防止SQL注入)

预处理语句是防止SQL注入攻击的关键方法,MySQLi和PDO均支持:

php调用sql数据库代码怎么写

<?php
$conn = new mysqli("localhost", "username", "password", "database_name");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
// 1. 准备SQL语句
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email); // "ss"表示两个字符串参数
// 2. 绑定参数并执行
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
echo "记录插入成功";
$stmt->close();
$conn->close();
?>

PDO(PHP Data Objects)扩展

PDO是更通用的数据库抽象层,支持多种数据库(如MySQL、PostgreSQL、SQLite等):

<?php
try {
    // 1. 创建PDO连接
    $pdo = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 2. 执行查询
    $stmt = $pdo->query("SELECT id, name FROM users");
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    // 3. 处理结果
    foreach ($results as $row) {
        echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
    }
} catch (PDOException $e) {
    die("数据库错误: " . $e->getMessage());
}
// 4. 关闭连接(PDO会自动处理)
?>

常见操作对比

操作类型 MySQLi(面向对象) PDO
连接数据库 $conn = new mysqli(...) $pdo = new PDO(...)
执行查询 $conn->query(...) $pdo->query(...)
获取结果 $result->fetch_assoc() $stmt->fetch(PDO::FETCH_ASSOC)
预处理语句 $stmt->bind_param(...) $stmt->bindParam(...)
错误处理 $conn->connect_error $e->getMessage()

最佳实践

  1. 始终使用预处理语句:避免直接拼接SQL字符串,防止SQL注入。
  2. 关闭连接:虽然PHP脚本结束后会自动释放资源,但显式关闭是良好习惯。
  3. 错误处理:使用try-catch或检查返回值,确保代码健壮性。
  4. 使用PDO:如果项目可能切换数据库类型,PDO是更好的选择。

相关问答FAQs

Q1: PHP中如何防止SQL注入攻击?
A1: 防止SQL注入的最佳方法是使用预处理语句(Prepared Statements),通过分离SQL逻辑和数据,确保用户输入不会被解释为SQL代码,在MySQLi中使用$stmt->bind_param()绑定参数,或在PDO中使用$stmt->bindParam(),对用户输入进行过滤和验证也是必要的辅助措施。

php调用sql数据库代码怎么写

Q2: MySQLi和PDO有什么区别?应该如何选择?
A2: MySQLi是MySQL专用扩展,支持MySQL特有的功能(如多语句执行),而PDO是通用数据库抽象层,支持多种数据库(如MySQL、PostgreSQL、SQLite等),如果项目仅使用MySQL且需要高性能,MySQLi是不错的选择;如果未来可能迁移数据库或需要统一接口,PDO更合适,PDO支持更灵活的预处理语句绑定方式(如命名参数)。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-09-15 22:25
下一篇 2025-09-15 22:43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信