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

相关推荐

  • 分布式缓存系统如何优化Redis性能?

    分布式缓存架构是指将数据分散存储在多台服务器上,以提高系统的可扩展性和性能。Redis作为一种常用的分布式缓存技术,通过其高性能的键值存储和灵活的数据结构支持,为应用提供了快速的读写能力和高并发处理能力。

    2024-07-27
    005
  • 软件如何合法合规使用数据库?权限管理与数据安全怎么把控?

    要允许软件使用数据库,需要从技术配置、权限管理、安全防护等多个维度进行系统性的设置和优化,以确保数据访问的合法性、安全性和高效性,整个过程涉及数据库服务器的配置、用户账号的创建与授权、连接参数的正确设置,以及必要的安全策略实施,以下从具体步骤和关键要点展开说明,需明确数据库的类型(如MySQL、PostgreS……

    2025-09-16
    0014
  • 服务器控制面板管理

    服务器控制面板管理涉及资源监控、服务配置、权限设置、日志分析及安全防护,支持远程操作与性能优化,确保系统稳定运行并提升管理

    2025-05-12
    009
  • 2025年moon服务器怎么选才不会踩坑?

    在当今数字化浪潮中,服务器作为支撑各类应用与服务的核心基础设施,其架构与形态正经历着深刻的变革,当提及“moon服务器推荐”时,业内资深人士通常会联想到一个具有革命性意义的产品线——HPE Moonshot,它并非指代单一型号的服务器,而是一种颠覆传统机架式服务器设计理念的高密度、低功耗计算架构,本文将深入探讨……

    2025-10-29
    009

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信