新闻中心
PHP mysqli操作示例讲解_PHP通过mysqli执行数据库查询
PHP用mysqli操作数据库核心是连接、执行SQL、获取结果,需重视错误处理与资源释放:1.推荐面向对象方式建安全连接并检查错误;2.查询用prepare+bind_param防注入;3.增删改查后及时关闭语句或释放结果。

PHP 用 mysqli 执行数据库查询,核心就三点:连上数据库、发 SQL、取结果。不复杂,但容易忽略错误处理和资源释放。下面用实际代码讲清楚常用场景。
1. 建立安全连接(推荐面向对象方式)
mysqli 支持面向对象(OO)和过程式两种风格,推荐用 OO 方式,更清晰、易维护。
示例:
$host = 'localhost';
$username = 'root';
$password = '123456';
$database = 'test_db';
<p>// 创建连接
$mysqli = new mysqli($host, $username, $password, $database);</p><p>// 检查连接是否成功
if ($mysqli->connect_error) {
die('连接失败:' . $mysqli->connect_error);
}</p><p>// 设置字符集,避免中文乱码
$mysqli->set_charset('utf8mb4');</p>注意:
• 不要直接把密码写死在代码里,生产环境应从配置文件或环境变量读取;
• utf8mb4 支持 emoji 和完整 Unicode,比 utf8 更稳妥;
• 连接失败必须检查,否则后续操作会报错或静默失败。
2. 执行查询语句(SELECT)并获取数据
分“有结果集”和“无结果集”两类操作,SELECT 属于前者。
示例:查用户列表
$sql = "SELECT id, name, email FROM users WHERE status = ?";
$stmt = $mysqli->prepare($sql); // 预处理,防 SQL 注入
<p>$status = 1;
$stmt->bind_param('i', $status); // 'i' 表示整型参数
$stmt->execute();</p><p>$result = $stmt->get_result(); // 获取结果集</p><p>while ($row = $result->fetch_assoc()) {
echo "ID: {$row['id']}, 姓名: {$row['name']}, 邮箱: {$row['email']}<br>";
}</p><p>$stmt->close(); // 记得关闭语句</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/839">
<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680126275698.png" alt="QoQo">
</a>
<div class="aritcle_card_info">
<a href="/ai/839">QoQo</a>
<p>QoQo是一款专注于UX设计的AI工具,可以帮助UX设计师生成用户角色卡片、用户旅程图、用户访谈问卷等。</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="QoQo">
<span>172</span>
</div>
</div>
<a href="/ai/839" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="QoQo">
</a>
</div>
关键点:
• 一定要用 prepare + bind_param 处理用户输入,杜绝 SQL 注入;
• fetch_assoc() 返回关联数组,更直观;也可用 fetch_array() 或 fetch_object();
• 查询完及时调用 $stmt->close() 或 $result->free(),释放内存。
3. 执行增删改(INSERT/UPDATE/DELETE)
这类操作不返回结果集,重点看影响行数和错误提示。
示例:添加一条记录
$sql = "INSERT INTO users (name, email, status) VALUES (?, ?, ?)";
$stmt = $mysqli->prepare($sql);
<p>$name = '张三';
$email = 'zhangsan@example.com';
$status = 1;</p><p>$stmt->bind_param('ssi', $name, $email, $status);
$stmt->execute();</p><p>if ($stmt->affected_rows > 0) {
echo "新增成功,ID:" . $mysqli->insert_id;
} else {
echo "执行失败:" . $stmt->error;
}</p><p>$stmt->close();</p>说明:
• $stmt->affected_rows 返回受影响的行数,INSERT 成功至少为 1;
• $mysqli->insert_id 可拿到刚插入记录的自增 ID;
• 即使是简单 INSERT,也建议用预处理,统一风格、更安全。
4. 简单查询(无参数)可用 query(),但慎用
如果 SQL 固定、不含用户输入(比如查全部配置项),可用 query() 简化写法:
$result = $mysqli->query("SELECT * FROM config");
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo $row['key'] . ' = ' . $row['value'] . '<br>';
}
}
$result->free(); // 释放结果集
提醒:
• 绝对不要拼接用户输入到这种 SQL 字符串里;
• 仍需检查 $result 是否为 false(查询失败时返回 false);
• 记得调用 free(),尤其在循环中多次查询时。
基本上就这些。掌握连接、预处理查询、增删改判断、基础错误处理,就能安
全稳定地用 mysqli 操作 MySQL 数据库了。
以上就是PHP mysqli操作示例讲解_PHP通过mysqli执行数据库查询的详细内容,更多请关注php中文网其它相关文章!
# 追溯到
# 漳州营销平台数字化推广
# 网站建设行业突破
# 淮安营销推广客服电话
# 网页seo怎么做开发
# 怎么准确搜出关键词排名
# 乐清实体店推广招聘网站
# 优化不能忽略的seo
# 安阳网站建设制作
# 关键词seo排名僦辽大将军.排名23
# 深圳做网站网站建设
# 从子
# 器及
# 行数
# mysql
# 结构化
# 建安
# 数据处理
# 数据库查询
# 面向对象
# 邮箱
# 配置文件
# 环境变量
# ai
# 中文乱码
# word
# php
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法
Django表单提交验证失败后保持字段值不刷新
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
在python-socketio事件处理器中安全访问Flask应用上下文
J*aScript中localStorage数据的获取、清洗与格式化教程
steam官方入口大全 steam账号注册及操作指南
大麦的“候补”是什么意思 大麦候补购票规则【详解】
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
随机参数递归函数的基准调用次数与时间复杂度探究
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
知音漫客正版漫画平台_知音漫客官网账号登录
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
b站如何看历史记录_b站观看历史找回方法
照顾宝贝2小游戏点击立即在线玩
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
HTML长属性值处理:表单action路径优化与代码规范应对
163邮箱注册官网 免费申请163个人邮箱
React Router v6 教程:构建认证保护的私有路由与重定向策略
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
CSS子选择器:如何区分并样式化嵌套列表的子层级
Pandas DataFrame:高效添加条件计算列
J*aScript中在Map循环中检测并处理空数组元素
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
J*aScript数组对象转换:按指定键分组与值收集
EMS快递官网app_中国邮政速递物流手机客户端
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法
qq游戏网页版直接玩_qq游戏免下载快速入口
126邮箱手机版登录官网2026_126手机邮箱免费入口最新
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
Golang如何使用context实现超时取消_Golang context超时取消模式实践
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
J*a最大堆Heapify方法修复:索引计算与边界条件深度解析
在VS Code中配置和运行Dart程序的完整步骤
sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
c++ 命名空间怎么用 c++ namespace使用指南


2025-12-15
浏览次数:次
返回列表