新手教程:数据库操作(使用PDO或MySQLi扩展)

简介: 本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!

下面是一篇针对新手的数据库操作教程,我们将分别介绍如何使用PDO(PHP Data Objects)和MySQLi扩展来连接和操作MySQL数据库。这两种方法都是PHP中常用的数据库操作方式,PDO更加现代和灵活,而MySQLi则提供了面向过程和面向对象两种API。

使用PDO扩展进行数据库操作

1. 安装与配置

PDO是PHP的内置扩展,通常默认启用。如果未启用,可以在php.ini文件中找到并取消注释以下行:

ini
extension=pdo_mysql

2. 创建数据库连接

php
<?php
try {
$dsn = 'mysql:host=your_host;dbname=your_dbname;charset=utf8mb4';
$username = 'your_username';
$password = 'your_password';
$pdo = new PDO($dsn, $username, $password);
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>

3. 执行查询

查询数据

php
<?php
try {
$stmt = $pdo->query("SELECT * FROM your_table");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo $row['column_name'] . "<br>";
    }
} catch (PDOException $e) {
echo "查询失败: " . $e->getMessage();
}
?>

插入数据

php
<?php
try {
$stmt = $pdo->prepare("INSERT INTO your_table (column1, column2) VALUES (:value1, :value2)");
$stmt->bindParam(':value1', $value1);
$stmt->bindParam(':value2', $value2);
$value1 = 'example1';
$value2 = 'example2';
$stmt->execute();
echo "插入成功";
} catch (PDOException $e) {
echo "插入失败: " . $e->getMessage();
}
?>

更新数据

php
<?php
try {
$stmt = $pdo->prepare("UPDATE your_table SET column1 = :value1 WHERE column2 = :value2");
$stmt->bindParam(':value1', $newValue1);
$stmt->bindParam(':value2', $conditionValue);
$newValue1 = 'new_value';
$conditionValue = 'condition_value';
$stmt->execute();
echo "更新成功";
} catch (PDOException $e) {
echo "更新失败: " . $e->getMessage();
}
?>

删除数据

php
<?php
try {
$stmt = $pdo->prepare("DELETE FROM your_table WHERE column1 = :value");
$stmt->bindParam(':value', $value);
$value = 'value_to_delete';
$stmt->execute();
echo "删除成功";
} catch (PDOException $e) {
echo "删除失败: " . $e->getMessage();
}
?>

使用MySQLi扩展进行数据库操作

1. 安装与配置

MySQLi扩展也是PHP的内置扩展,通常默认启用。如果未启用,可以在php.ini文件中找到并取消注释以下行:

ini
extension=mysqli

2. 创建数据库连接

面向对象方式

php
<?php
$mysqli = new mysqli("your_host", "your_username", "your_password", "your_dbname");
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
}
echo "连接成功";
?>

面向过程方式

php
<?php
$mysqli = mysqli_connect("your_host", "your_username", "your_password", "your_dbname");
if (!$mysqli) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>

3. 执行查询

查询数据

面向对象方式

php
<?php
$result = $mysqli->query("SELECT * FROM your_table");
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row['column_name'] . "<br>";
    }
} else {
echo "0 结果";
}
$result->close();
?>

面向过程方式

php
<?php
$result = mysqli_query($mysqli, "SELECT * FROM your_table");
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row['column_name'] . "<br>";
    }
} else {
echo "0 结果";
}
mysqli_free_result($result);
?>

插入数据

面向对象方式

php
<?php
$stmt = $mysqli->prepare("INSERT INTO your_table (column1, column2) VALUES (?, ?)");
$stmt->bind_param("ss", $value1, $value2);
$value1 = 'example1';
$value2 = 'example2';
if ($stmt->execute()) {
echo "插入成功";
} else {
echo "插入失败: " . $stmt->error;
}
$stmt->close();
?>

面向过程方式

php
<?php
$stmt = mysqli_prepare($mysqli, "INSERT INTO your_table (column1, column2) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $value1, $value2);
$value1 = 'example1';
$value2 = 'example2';
if (mysqli_stmt_execute($stmt)) {
echo "插入成功";
} else {
echo "插入失败: " . mysqli_stmt_error($stmt);
}
mysqli_stmt_close($stmt);
?>

更新和删除数据的操作与插入数据类似,只需更改SQL语句即可

总结

  • PDO 提供了更高级别的抽象和更好的错误处理机制,适合大多数现代PHP应用。
  • MySQLi 提供了两种API(面向对象和面向过程),适合那些希望更直接控制数据库操作的用户。

文章教程由269安卓网收集整理:https://www.0269.net/提供详细教程,希望这篇教程能帮助你快速上手PHP中的数据库操作!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
622 5
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
10月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1244 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
513 4
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
583 0
【入门级教程】MySQL:从零开始的数据库之旅
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
399 0
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
530 0