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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文为新手介绍如何使用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中的数据库操作!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
3月前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
81 0
【入门级教程】MySQL:从零开始的数据库之旅
|
3月前
|
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`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
4月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
4月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
3月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
3月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
59 0
|
4月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
3月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
3月前
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
65 0