php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
发布时间 - 2025-12-31 00:00:00 点击率:次零基础应选 PDO。它支持多数据库、预处理统一、防注入直观;需手动开启异常模式和设置 UTF8;INSERT 报错多因绑定参数不匹配;SELECT 需调用 fetch();DELETE/UPDATE 用 rowCount() 获取影响行数。
PHP 连接 MySQL 用 mysqli 还是 PDO?
零基础直接选 PDO。它支持多种数据库(MySQL、PostgreSQL、SQLite),预处理语句写法统一,防 SQL 注入更直观;mysqli 虽然轻量,但面向对象和过程式混用容易混乱,且只适配 MySQL。
注意:PDO 默认不开启异常模式,出错时静默失败——必须手动设置:
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
INSERT 时为什么总报 “SQLSTATE[HY000]: General error”?
这通常是预处理语句绑定参数出错导致的,比如:
- 占位符数量和
execute()传入数组元素个数不一致 - 用了命名参数(如
:name)却传了索引数组(['张三']) - 字段名拼错或表不存在,但没开异常模式,错误被吞掉
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->execute(['name' => '李四', 'email' => 'lisi@example.com']);SELECT 返回空数组,但数据明明存在
常见原因不是 SQL 写错,而是:
- 没调用
fetch()或fetchAll()——prepare()和execut不返回结果,只是执行
e() - 用了
PDO::FETCH_NUM却按键名取值(如$row['name']) - 查询条件含中文或特殊字符,但连接未设 UTF8:
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([123]);
$user = $stmt->fetch(); // 注意这里!DELETE 和 UPDATE 怎么确认影响了几行?
execute() 返回布尔值,不代表影响行数。必须调用 rowCount():
$stmt = $pdo->prepare("UPDATE users SET status = ? WHERE id = ?");
$stmt->execute(['active', 456]);
echo $stmt->rowCount(); // 输出实际更新的行数,可能为 0如果返回 0,说明没匹配到记录——这不是错误,而是业务常态,别当成异常抛出。另外,WHERE 条件漏写会导致全表误更新,上线前务必检查。
PDO 的事务、错误上下文、字符集初始化这些点,初学时容易跳过,但一旦出问题,排查成本远高于提前加两行配置。
# mysql
# php
# ai
# 为什么
# sql
# 面向对象
# select
# Error
# mysqli
# pdo
# delete
# 对象
# sqlite
# postgresql
# 数据库
# 行数
# 用了
# 绑定
# 不代表
# 这不是
# 不存在
# 报错
# 能为
# 传了
# 抛出
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
英语简历制作免费网站推荐,如何将简历翻译成英文?
用yum安装MySQLdb模块的步骤方法
详解Android——蓝牙技术 带你实现终端间数据传输
Laravel如何处理和验证JSON类型的数据库字段
Laravel如何配置任务调度?(Cron Job示例)
如何在腾讯云服务器快速搭建个人网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
jQuery validate插件功能与用法详解
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
EditPlus中的正则表达式实战(6)
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
图册素材网站设计制作软件,图册的导出方式有几种?
详解CentOS6.5 安装 MySQL5.1.71的方法
制作公司内部网站有哪些,内网如何建网站?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
b2c电商网站制作流程,b2c水平综合的电商平台?
微信小程序 闭包写法详细介绍
音乐网站服务器如何优化API响应速度?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
大连 网站制作,大连天途有线官网?
浅谈javascript alert和confirm的美化
如何快速搭建FTP站点实现文件共享?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
如何在阿里云部署织梦网站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Laravel如何配置和使用缓存?(Redis代码示例)
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
昵图网官网入口 昵图网素材平台官方入口
微信推文制作网站有哪些,怎么做微信推文,急?
js实现获取鼠标当前的位置
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
javascript中闭包概念与用法深入理解
JavaScript模板引擎Template.js使用详解
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何快速建站并高效导出源代码?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Android使用GridView实现日历的简单功能
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何使用模型观察者?(Observer代码示例)


e()