是不是刚学 PHP 的新手,一碰到数据库操作就发怵?写了连接数据库的代码,浏览器却跳出 “连接失败” 的红色提示;好不容易连上了,想插条数据却提示 SQL 语法错误;查询数据时要么一片空白,要么把整个表的数据都查出来了;更愁的是,想改条数据结果把全表都改了,删数据时手一抖差点删光表。数据库增删改查(CRUD)是 PHP 开发的核心,也是新手最容易踩坑的地方。今天兔子哥就带新手朋友们手把手学数据库操作,从连接到增删改查,每步都附代码和错误解决,跟着做,你也能轻松搞定 PHP 数据库操作!
基础问题:为啥数据库操作这么重要?增删改查是啥意思?
可能有朋友会问:“我学 PHP 做网页,为啥非得学数据库操作?” 其实啊,网页里的用户信息、商品数据、文章内容都得存在数据库里,不然用户一关网页,数据全没了。比如你做个博客,文章得存在数据库里,用户访问时 PHP 从数据库取出来显示;用户注册的账号密码,也得存在数据库里,下次登录才能验证。
增删改查就是操作数据库的四大基本动作:增加(Create)数据、查询(Read)数据、更新(Update)数据、删除(Delete)数据,简称 CRUD。这四个操作是所有数据库功能的基础,学会了就能做用户注册登录、商品管理这些常用功能。网友 “刚学 PHP 的小王” 说:“之前做网页数据都是固定的,学会增删改查后,终于能让用户自己提交数据并保存了,网页一下子‘活’了!”
第一步:准备工作,先建个数据库和表
操作数据库前,得先有个数据库和表,就像写字得先有本子和格子一样。咱们用 phpMyAdmin 来建,简单又方便。
建数据库:给数据找个 “仓库”
打开浏览器,输 “http://localhost/phpmyadmin”(前提是 XAMPP 的 Apache 和 MySQL 已启动),点左边 “新建”,数据库名填 “php_crud_demo”,排序规则选 “utf8_general_ci”(支持中文),点 “创建”,数据库就建好了。
建表:给数据分个 “格子”
选中刚建的 “php_crud_demo” 数据库,点 “SQL”,复制下面的代码执行,创建一个 “users” 表存用户数据:
sql
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, -- 自增ID,唯一标识每条数据username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,不能重复email VARCHAR(100) NOT NULL, -- 邮箱age INT -- 年龄,可选);执行后刷新,左边就会出现 “users” 表,表里有 id、username、email、age 四个字段,后面咱们就操作这个表。
第二步:连接数据库,这一步错了全白搭
操作数据库前得先连接数据库,就像打开仓库门才能拿东西。PHP 连接 MySQL 常用 mysqli 扩展,代码如下:
php
// 数据库信息$servername = "localhost"; // 服务器地址,本地一般是localhost$username = "root"; // 数据库用户名,XAMPP默认是root$password = ""; // 数据库密码,XAMPP默认空密码$dbname = "php_crud_demo"; // 要连接的数据库名// 创建连接$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接是否成功if ($conn->connect_error) {die("连接失败:" . $conn->connect_error); // 失败就输出错误信息}echo "数据库连接成功!";?>把这段代码存为 “db_connect.php”,放 XAMPP 的 “htdocs” 文件夹,浏览器访问如果显示 “数据库连接成功”,就说明连接没问题。
常见错误解决:
- 提示 “Access denied for user 'root'@'localhost'”:密码错了!XAMPP 默认密码为空,如果你改了密码,代码里 $password 要填新密码;
- 提示 “Unknown database 'php_crud_demo'”:数据库名错了,检查 $dbname 是否和你建的数据库名一致;
- 连接没反应:看看 MySQL 服务是不是没启动,XAMPP 控制面板里 MySQL 是不是绿色运行状态。
第三步:增删改查实战,一个一个攻克
连接成功后,就可以操作数据了,咱们一个一个来,先易后难。
1. 增加数据(Create):往表里插数据
比如用户注册时,把用户名、邮箱存到数据库,代码如下:
php
include 'db_connect.php'; // 引入连接文件// 要插入的数据$username = "testuser";$email = "test@example.com";$age = 20;// SQL插入语句$sql = "INSERT INTO users (username, email, age)VALUES ('$username', '$email', $age)";// 执行SQLif ($conn->query($sql) === TRUE) {echo "新数据插入成功!新记录ID是:" . $conn->insert_id;} else {echo "错误:" . $sql . "
" . $conn->error;}// 关闭连接$conn->close();?>易错点:
- 字符串值要用单引号括起来(比如'age);
- 字段名和值的数量要一致,比如 users 表有 3 个字段(除了自增 id),VALUES 里也要有 3 个值;
- 别漏了逗号,字段之间、值之间都要加逗号。
2. 查询数据(Read):从表里取数据
查询是最常用的操作,比如显示所有用户或查某个用户,代码如下:
php
include 'db_connect.php';// 查询所有用户$sql = "SELECT id, username, email, age FROM users";$result = $conn->query($sql);// 检查有没有数据if ($result->num_rows > 0) {// 循环输出每条数据while($row = $result->fetch_assoc()) {echo "ID: " . $row["id"] . ",用户名: " . $row["username"]. ",邮箱: " . $row["email"] . ",年龄: " . $row["age"] . "
";}} else {echo "0 结果";}// 关闭连接$conn->close();?>查单个用户:加 WHERE 条件,比如查 id=1 的用户:
sql
$sql = "SELECT * FROM users WHERE id = 1";易错点:
- 表名或字段名写错,比如把 users 写成 user,就会提示 “Unknown table”;
- 条件判断错,比如想查 age>18 的用户,写成 “WHERE age> 18”,别漏了空格。
3. 更新数据(Update):修改表里的数据
比如用户改了邮箱,要更新数据库里的记录,代码如下:
php
include 'db_connect.php';// 要更新的数据和条件$newEmail = "new@example.com";$userId = 1;// SQL更新语句,一定要加WHERE条件!$sql = "UPDATE users SET email = '$newEmail' WHERE id = $userId";if ($conn->query($sql) === TRUE) {echo "数据更新成功";} else {echo "错误:" . $sql . "
" . $conn->error;}$conn->close();?>致命错误:千万别漏了 WHERE 条件!如果写成 “UPDATE users SET email = '$newEmail'”,会把表里所有用户的邮箱都改成新值,哭都来不及!新手一定要记住,更新必须加 WHERE。
4. 删除数据(Delete):从表里删数据
删除不需要的记录,比如删除 id=2 的用户,代码如下:
php
include 'db_connect.php';// 要删除的记录ID$userId = 2;// SQL删除语句,同样要加WHERE条件!$sql = "DELETE FROM users WHERE id = $userId";if ($conn->query($sql) === TRUE) {echo "数据删除成功";} else {echo "错误:" . $sql . "
" . $conn->error;}$conn->close();?>注意:删除比更新更危险,漏了 WHERE 会删光表数据!新手操作时最好先备份数据,或者先执行查询语句确认要删的记录对不对,再删。
| 操作 | 核心 SQL | 新手最易犯的错 | 后果 |
|---|---|---|---|
| 增加 | INSERT INTO 表 (字段) VALUES (值) | 字符串没加单引号 | SQL 语法错误 |
| 查询 | SELECT 字段 FROM 表 WHERE 条件 | 表名 / 字段名写错 | 0 结果或报错 |
| 更新 | UPDATE 表 SET 字段 = 值 WHERE 条件 | 漏写 WHERE | 全表数据被改 |
| 删除 | DELETE FROM 表 WHERE 条件 | 漏写 WHERE | 全表数据被删 |
自问自答:新手操作数据库常见疑问
怎么防止 SQL 注入?用户输入特殊字符会搞破坏吗?
会!比如用户输入用户名时填 “' OR '1'='1”,没处理的话可能会绕过验证。解决办法是用预处理语句,把数据和 SQL 分开,比如插入数据可以这样写:
php
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)");$stmt->bind_param("ss", $username, $email); // s表示字符串类型$stmt->execute();新手刚开始可以先了解,后面一定要学预处理,这是安全开发的基础。
查询结果是空的,明明表里有数据,咋回事?
先检查 SQL 语句对不对,把 $sql 变量 echo 出来,复制到 phpMyAdmin 的 SQL 窗口执行,看有没有结果。常见原因:WHERE 条件写错(比如 id=100 但表里没这个 id)、字段名和表名拼写错误、数据类型不匹配(比如用字符串条件查数字字段)。
操作完数据库后,必须关闭连接吗?
最好关闭!虽然 PHP 会自动关闭,但手动关闭是好习惯,特别是处理大量数据时,用
$conn->close();关闭连接,释放资源。最后说点实在话
数据库操作是 PHP 开发的 “灵魂”,刚开始犯错很正常,兔子哥第一次更新数据时就忘加 WHERE,把测试表全改了,当时冷汗都下来了。但只要记住 “连接要对、SQL 要对、条件要对” 这三原则,多练几次就会顺起来。
建议新手把每个操作的代码亲手敲一遍,别复制粘贴。敲的时候注意细节:引号是不是成对,逗号有没有漏,WHERE 条件加没加。遇到错误别慌,看看错误提示里的关键词,比如 “syntax error” 就查 SQL 语法,“unknown column” 就查字段名,大部分问题都能在 phpMyAdmin 里测试解决。
学会增删改查后,你可以试着做个用户管理系统:用表单提交数据(增加)、列表显示用户(查询)、编辑按钮改数据(更新)、删除按钮删数据(删除),这样就把四个操作串起来了。数据库操作不难,难的是细心和多练,只要坚持敲代码,你会发现自己越来越熟练,很快就能独立开发数据库相关的功能了!
标签: phpMyAdmin phpmyadmin
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~