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)
爱国的头像爱国
QQ聊天记录删除后,怎么从数据库里恢复?
上一篇 2025-09-15 22:25
php保存数据库乱码怎么办?解决方法与编码规范指南
下一篇 2025-09-15 22:43

相关推荐

  • 后端如何通过API将数据库值完整传递给前端?

    在构建动态网站和现代Web应用程序时,一个核心的任务就是将存储在数据库中的数据展示给用户,这个过程涉及一个精心设计的协作流程,其中后端服务器扮演着至关重要的“中间人”角色,理解这一数据传递的完整链路,对于每一位Web开发者来说都是必不可少的,下面,我们将详细拆解数据库值是如何一步步传递到前端的,第一步:后端从数……

    2025-10-04
    0017
  • 服务器上都有哪些可以坑人的恶搞指令?

    在数字世界的底层,服务器如同沉默的巨人,承载着海量的数据与不间断的服务,正是这股强大的力量,一旦被恶意利用或因无知而误触,便会造成毁灭性的后果,在服务器管理的圈子里,流传着一些看似无害却暗藏杀机的“服务器坑人指令”,它们常常披着“优化”、“清理”或“新奇功能”的外衣,诱骗缺乏警惕的用户执行,最终导致系统崩溃、数……

    2025-10-06
    0044
  • ecs对外工具_对外API规范

    ECS对外工具的API规范主要包括请求方式、请求地址、请求参数和响应格式等方面。开发者需要遵循这些规范来调用API接口,以实现对ECS实例的管理操作。

    2024-07-01
    0018
  • 服务器 logo

    在当今数字化时代,服务器作为数据存储、处理和传输的核心设备,其标识(Logo)扮演着重要的角色,一个独特且具有代表性的服务器 Logo 不仅能够增强品牌形象,还能在众多竞争对手中脱颖而出,让用户快速识别并记住品牌,以下是关于服务器 Logo 的详细探讨: 方面 设计理念 简洁明了是服务器 Logo 设计的首要原……

    2025-04-08
    005

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信