PHP学习笔记之三数据库基本操作

PHP学习笔记之三数据库基本操作

PHP学习笔记之三数据库基本操作

在PHP开发中,数据库操作是核心技能之一,通过数据库,我们可以实现数据的存储、查询、更新和删除等操作,本文将介绍PHP中常用的数据库操作方法,包括连接数据库、执行SQL语句、处理查询结果以及防止SQL注入等内容。

连接数据库

PHP提供了多种方式连接数据库,其中最常用的是MySQLi和PDO扩展,MySQLi是专门为MySQL设计的,而PDO则支持多种数据库类型。

使用MySQLi连接数据库的示例代码如下:

$host = 'localhost';  
$username = 'root';  
$password = '';  
$database = 'test_db';  
$conn = new mysqli($host, $username, $password, $database);  
if ($conn->connect_error) {  
    die("连接失败: " . $conn->connect_error);  
}  
echo "连接成功";  

使用PDO连接数据库的示例代码如下:

try {  
    $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);  
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    echo "连接成功";  
} catch (PDOException $e) {  
    die("连接失败: " . $e->getMessage());  
}  

执行SQL语句

连接数据库后,可以通过query()exec()方法执行SQL语句。query()通常用于返回结果集的查询(如SELECT),而exec()用于执行不返回结果的语句(如INSERT、UPDATE、DELETE)。

1 查询数据

使用MySQLi查询数据:

PHP学习笔记之三数据库基本操作

$sql = "SELECT * FROM users";  
$result = $conn->query($sql);  
if ($result->num_rows > 0) {  
    while ($row = $result->fetch_assoc()) {  
        echo "ID: " . $row["id"] . " Name: " . $row["name"] . "<br>";  
    }  
} else {  
    echo "0 结果";  
}  

使用PDO查询数据:

$sql = "SELECT * FROM users";  
$stmt = $pdo->query($sql);  
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {  
    echo "ID: " . $row["id"] . " Name: " . $row["name"] . "<br>";  
}  

2 插入、更新和删除数据

使用MySQLi插入数据:

$sql = "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')";  
if ($conn->query($sql) === TRUE) {  
    echo "新记录插入成功";  
} else {  
    echo "Error: " . $sql . "<br>" . $conn->error;  
}  

使用PDO插入数据:

$sql = "INSERT INTO users (name, email) VALUES ('Jane', 'jane@example.com')";  
$pdo->exec($sql);  
echo "新记录插入成功";  

防止SQL注入

SQL注入是一种常见的网络安全漏洞,攻击者可以通过恶意输入破坏数据库,为了防止SQL注入,应使用预处理语句(Prepared Statements)。

使用MySQLi预处理语句:

$stmt = $conn->prepare("SELECT * FROM users WHERE name = ?");  
$stmt->bind_param("s", $name);  
$name = "John";  
$stmt->execute();  
$result = $stmt->get_result();  
while ($row = $result->fetch_assoc()) {  
    echo "ID: " . $row["id"] . " Name: " . $row["name"] . "<br>";  
}  
$stmt->close();  

使用PDO预处理语句:

PHP学习笔记之三数据库基本操作

$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");  
$stmt->bindParam(':name', $name);  
$name = "John";  
$stmt->execute();  
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {  
    echo "ID: " . $row["id"] . " Name: " . $row["name"] . "<br>";  
}  

关闭数据库连接

操作完成后,应及时关闭数据库连接以释放资源。

使用MySQLi关闭连接:

$conn->close();  

使用PDO关闭连接:

$pdo = null;  

相关问答FAQs

Q1: MySQLi和PDO有什么区别?
A1: MySQLi是专门为MySQL设计的,功能较为集中,而PDO支持多种数据库类型(如MySQL、PostgreSQL、SQLite等),具有更好的兼容性,PDO提供了更统一的API接口,适合需要切换数据库的场景。

Q2: 如何选择使用MySQLi还是PDO?
A2: 如果项目仅使用MySQL数据库,且不需要跨数据库支持,可以选择MySQLi;如果项目可能需要切换数据库类型,或者希望代码更具通用性,推荐使用PDO,PDO的预处理语句语法更简洁,适合初学者使用。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/204207.html

(0)
上一篇 2025年12月30日 16:53
下一篇 2025年12月30日 17:21

相关推荐

  • 在云南部署服务器有哪些优势和应用场景?

    在人们的传统印象中,云南是彩云之南,是旅游的天堂,以其壮丽的自然风光、多元的民族文化和宜人的气候而闻名遐迩,在这片充满诗意的土地上,一场深刻的数字变革正在悄然发生,当“云南”与“服务器”这两个词汇联系在一起时,一幅关于数字经济、区域发展和未来潜力的新画卷正徐徐展开,云南,正凭借其独特的优势,成为中国西南地区乃至……

    2025年10月20日
    01050
  • Android隐私问题检测工具有哪些?如何检测隐私泄露风险?

    Android隐私问题检测的重要性与实现路径随着智能手机的普及,Android系统凭借其开放性和灵活性占据全球市场主导地位,开放性也带来了隐私泄露的风险,从恶意软件滥用权限到过度收集用户数据,Android隐私问题日益凸显,建立系统化的隐私问题检测机制,成为保护用户权益、维护生态安全的关键,本文将从Androi……

    2025年11月5日
    01870
  • 超云服务器硬盘总容量4T够用吗,服务器配件硬盘怎么选?

    在服务器架构与数据存储领域,针对超云服务器配置4T总容量硬盘的方案,是当前中小企业及特定高负载应用中实现性能与成本平衡的最佳实践,这一配置不仅能够满足绝大多数业务场景下对于数据库存储、虚拟化平台及海量文件归档的需求,更在数据冗余度与读写效率之间找到了黄金分割点,对于追求高性价比与稳定性的运维而言,4T容量并非简……

    2026年2月28日
    0772
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 百度云CDN与又拍云CDN,究竟哪家更胜一筹?使用体验大对比

    百度云CDN与又拍云CDN:性能与服务的全面对比随着互联网的快速发展,网站和应用的用户数量不断增加,对网络速度和稳定性提出了更高的要求,CDN(内容分发网络)作为一种有效的网络加速技术,越来越受到企业的关注,本文将对比百度云CDN和又拍云CDN,从性能、服务、价格等方面进行全面分析,帮助您选择更适合自己的CDN……

    2025年11月5日
    01200

发表回复

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