网易首页 > 网易号 > 正文 申请入驻

PHP 网站常用 SQL 语句示例

0
分享至

PHP 网站常用 SQL 语句示例

以下是 PHP 网站开发中常用的 SQL 语句分类整理,包含基本 CRUD 操作和安全实践建议。

1. 数据库连接(PDO 示例)

php

try { $pdo = new PDO( "mysql:host=localhost;dbname=mydb;charset=utf8mb4", "username", "password", [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false ] );} catch (PDOException $e) { die("数据库连接失败: " . $e->getMessage());}

2. 查询操作 (SELECT)

基本查询

php

// 查询所有用户$stmt = $pdo->query("");$users = $stmt->fetchAll();// 带条件的查询$stmt = $pdo->prepare("SELECT * FROM products WHERE price > ? AND stock > 0");$stmt->execute([100]);$products = $stmt->fetchAll();

关联查询

php

// 内连接查询$sql = "SELECT u.username, o.order_date, o.amount FROM users u JOIN orders o ON u.id = o.user_id WHERE u.id = ?";$stmt = $pdo->prepare($sql);$stmt->execute([$userId]);$orders = $stmt->fetchAll();

3. 插入数据 (INSERT)

基本插入

php

$sql = "INSERT INTO users (username, email, password_hash, created_at) VALUES (?, ?, ?, NOW())";$stmt = $pdo->prepare($sql);$stmt->execute([$username, $email, $passwordHash]);$userId = $pdo->lastInsertId(); // 获取自增ID

批量插入

php

$data = [ ['Product A', 19.99], ['Product B', 29.99], ['Product C', 39.99]];$sql = "INSERT INTO products (name, price) VALUES (?, ?)";$stmt = $pdo->prepare($sql);foreach ($data as $row) { $stmt->execute($row);}

4. 更新数据 (UPDATE)

php

// 更新用户信息$sql = "UPDATE users SET email = ?, updated_at = NOW() WHERE id = ?";$stmt = $pdo->prepare($sql);$stmt->execute([$newEmail, $userId]);// 带条件更新$sql = "UPDATE products SET stock = stock - ? WHERE id = ? AND stock >= ?";$stmt = $pdo->prepare($sql);$stmt->execute([$quantity, $productId, $quantity]);

5. 删除数据 (DELETE)

php

// 删除记录$sql = "DELETE FROM sessions WHERE expires_at < NOW()";$pdo->exec($sql); // 直接执行,无需参数// 安全删除(带条件)$sql = "DELETE FROM cart WHERE user_id = ? AND product_id = ?";$stmt = $pdo->prepare($sql);$stmt->execute([$userId, $productId]);

6. 事务处理

php

try { $pdo->beginTransaction(); // 操作1: 扣除库存 $stmt = $pdo->prepare("UPDATE products SET stock = stock - ? WHERE id = ?"); $stmt->execute([$quantity, $productId]); // 操作2: 添加订单 $stmt = $pdo->prepare("INSERT INTO orders (user_id, product_id, quantity) VALUES (?, ?, ?)"); $stmt->execute([$userId, $productId, $quantity]); $pdo->commit();} catch (Exception $e) { $pdo->rollBack(); throw $e;}

7. 安全最佳实践

  1. 始终使用预处理语句防止 SQL 注入
  2. php
  3. // 错误方式(易受攻击)$pdo->query("SELECT * FROM users WHERE username = '$username'");// 正确方式$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");$stmt->execute([$username]);
  4. 限制查询结果数量
  5. php
  6. $stmt = $pdo->prepare("SELECT * FROM logs WHERE user_id = ? LIMIT 100");
  7. 使用参数化分页
  8. php
  9. $page = $_GET['page'] ?? 1;$perPage = 20;$offset = ($page - 1) * $perPage;$stmt = $pdo->prepare("SELECT * FROM articles LIMIT ? OFFSET ?");$stmt->execute([$perPage, $offset]);
  10. 敏感数据使用事务
  11. php
  12. $pdo->beginTransaction();try { // 多个相关操作 $pdo->commit();} catch (Exception $e) { $pdo->rollBack();}

8. 实用查询示例

检查记录是否存在

php

$stmt = $pdo->prepare("SELECT 1 FROM users WHERE email = ? LIMIT 1");$stmt->execute([$email]);$exists = $stmt->fetchColumn();

统计记录数

php

$stmt = $pdo->prepare("SELECT COUNT(*) FROM products WHERE category_id = ?");$stmt->execute([$categoryId]);$count = $stmt->fetchColumn();

搜索功能

php

$search = "%" . trim($_GET['q']) . "%";$stmt = $pdo->prepare("SELECT * FROM articles WHERE title LIKE ? OR content LIKE ? LIMIT 20");$stmt->execute([$search, $search]);

这些 SQL 示例涵盖了 PHP 网站开发中最常见的数据库操作场景,遵循这些模式可以有效提高代码安全性和可维护性。

声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中共山东省委组织部干部任前公示公告

中共山东省委组织部干部任前公示公告

上观新闻
2026-04-23 07:06:03
最新:曝俄军败退扎波罗热!丢失几年来占领的全部土地

最新:曝俄军败退扎波罗热!丢失几年来占领的全部土地

项鹏飞
2026-04-20 20:13:15
隐秘的“产能阀门”:1.6T光模块卡脖子环节全解析,国产替代六巨头蓄势待发

隐秘的“产能阀门”:1.6T光模块卡脖子环节全解析,国产替代六巨头蓄势待发

新浪财经
2026-04-22 22:47:04
“暴力抗法”半月后,拼多多发生重大高管调整

“暴力抗法”半月后,拼多多发生重大高管调整

一见财经
2026-04-23 08:04:06
勇士4冠核心放弃2000万年薪,转行做媒体人?一哥或复出取代他

勇士4冠核心放弃2000万年薪,转行做媒体人?一哥或复出取代他

你的篮球频道
2026-04-23 07:18:42
联合国:加沙3.8万多名女性被以军杀害

联合国:加沙3.8万多名女性被以军杀害

参考消息
2026-04-20 13:10:03
54岁香港女歌手与内地娱乐公司闹翻,追债半年终于胜诉

54岁香港女歌手与内地娱乐公司闹翻,追债半年终于胜诉

TVB剧评社
2026-04-21 21:56:45
文班亚马脑震荡会缺席多久?马刺跟队记者爆料:他甚至没有去医院

文班亚马脑震荡会缺席多久?马刺跟队记者爆料:他甚至没有去医院

体坛野秀才
2026-04-22 12:52:03
16GB+1TB!荣耀新机突然上架,4月23日,正式发布!

16GB+1TB!荣耀新机突然上架,4月23日,正式发布!

科技堡垒
2026-04-20 12:06:51
拒挂国旗、订单全给日韩,被停止合作封锁航线的长荣,今咎由自取

拒挂国旗、订单全给日韩,被停止合作封锁航线的长荣,今咎由自取

笑谈历史阿晡
2026-04-22 12:14:10
苹果换CEO原因:库克不够果断、搞垮了Vision Pro、汽车等项目

苹果换CEO原因:库克不够果断、搞垮了Vision Pro、汽车等项目

Switch2来了
2026-04-22 17:00:33
中南医院护士长王婷:颜值、身材、能力“三绝”,各种奖拿到手软

中南医院护士长王婷:颜值、身材、能力“三绝”,各种奖拿到手软

汉史趣闻
2026-04-21 10:45:23
惨烈!西班牙“斗牛之王”失手:被公牛顶穿直肠,现场数千人惊叫

惨烈!西班牙“斗牛之王”失手:被公牛顶穿直肠,现场数千人惊叫

往史过眼云烟
2026-04-22 16:57:51
ESPN:阿森纳也有意免签席尔瓦!跟队:阿尔特塔过度用人隐患凸显

ESPN:阿森纳也有意免签席尔瓦!跟队:阿尔特塔过度用人隐患凸显

足球侦探
2026-04-23 08:30:08
去你的0-4!31分,他为大场面而生,3年啊!终于打出来了

去你的0-4!31分,他为大场面而生,3年啊!终于打出来了

体育新角度
2026-04-22 17:36:30
笑不活了!女孩把鸡画得圆肥被判不合格,家长把鸡的照片发给老师

笑不活了!女孩把鸡画得圆肥被判不合格,家长把鸡的照片发给老师

火山詩话
2026-04-21 09:46:21
有人说:打麻将和性生活是县城的底色?

有人说:打麻将和性生活是县城的底色?

灯锦年
2026-04-21 12:32:46
600889,将被“*ST”!

600889,将被“*ST”!

中国基金报
2026-04-22 23:13:56
深夜,火箭弹从天而降,以军阵地被袭击,特朗普:美军已重新武装

深夜,火箭弹从天而降,以军阵地被袭击,特朗普:美军已重新武装

新时代精神
2026-04-23 08:14:47
1935年,如果将泸定桥炸毁,红军可能全军覆没,刘文辉为何没炸?

1935年,如果将泸定桥炸毁,红军可能全军覆没,刘文辉为何没炸?

健康快乐丁
2025-03-29 20:30:04
2026-04-23 08:52:49
建邺区生态科技岛人工智能商会
建邺区生态科技岛人工智能商会
南京市建邺区生态科技岛人工智能行业商会
250文章数 0关注度
往期回顾 全部

科技要闻

车没卖爆,利润却大涨,特斯拉发布财报

头条要闻

员工被董事长训斥后自缢身亡 家属索赔123万法院判了

头条要闻

员工被董事长训斥后自缢身亡 家属索赔123万法院判了

体育要闻

网易传媒再度签约法国队和阿根廷队

娱乐要闻

蜜雪冰城泰国代言人 被扒出辱华黑历史

财经要闻

全球第一个国家宣布:储备6月耗尽

汽车要闻

纯电续航301km+激光雷达 宋Pro DM-i飞驰版9.99万起

态度原创

健康
艺术
旅游
家居
手机

干细胞抗衰4大误区,90%的人都中招

艺术要闻

郑丽文下令国民党勇往直前,孙中山亲题对联引发热议!

旅游要闻

老外爱逛南锣鼓巷

家居要闻

极简绘梦 克制和谐

手机要闻

OPPO Find X9 Ultra明天首销:把增距镜塞进手机里 7499元起

无障碍浏览 进入关怀版