新闻中心

PHP mysqli操作示例讲解_PHP通过mysqli执行数据库查询

2025-12-15
浏览次数:
返回列表
PHP用mysqli操作数据库核心是连接、执行SQL、获取结果,需重视错误处理与资源释放:1.推荐面向对象方式建安全连接并检查错误;2.查询用prepare+bind_param防注入;3.增删改查后及时关闭语句或释放结果。

php mysqli操作示例讲解_php通过mysqli执行数据库查询

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使用指南 

搜索