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

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.

相关推荐
热点推荐
冲刺“开门红”!北京地铁19号线二期工程全面开工

冲刺“开门红”!北京地铁19号线二期工程全面开工

北青网-北京青年报
2026-02-24 11:12:03
现货金银突然下跌

现货金银突然下跌

第一财经资讯
2026-02-24 09:32:02
葡媒报道赫伊森事件:皇马2024年就陷入过类似的争议

葡媒报道赫伊森事件:皇马2024年就陷入过类似的争议

懂球帝
2026-02-24 14:00:11
重庆女子花1188元买36斤活羊,烤完只剩6.9斤!豆包回复扎心了…

重庆女子花1188元买36斤活羊,烤完只剩6.9斤!豆包回复扎心了…

火山詩话
2026-02-23 17:22:20
这才是婉容与溥仪的真实相貌,这可不是演员饰演的

这才是婉容与溥仪的真实相貌,这可不是演员饰演的

TVB的四小花
2026-02-24 13:02:05
毛岸英究竟怎么牺牲的?2020年彭德怀发的绝密电报公开,写了什么

毛岸英究竟怎么牺牲的?2020年彭德怀发的绝密电报公开,写了什么

楚风说历史
2026-02-18 07:25:03
有什么反击混账父母原生家庭的案例 网友的讲述真是让人惊掉下巴

有什么反击混账父母原生家庭的案例 网友的讲述真是让人惊掉下巴

侃神评故事
2026-02-21 17:35:03
“不好看,有点吓人!”艺考生晒堪比小燕子的大眼睛,引人不适

“不好看,有点吓人!”艺考生晒堪比小燕子的大眼睛,引人不适

蝴蝶花雨话教育
2026-02-08 12:47:42
赵心童夺得斯诺克球员锦标赛冠军,苏格兰名将希金斯:他“绝对是个天才”

赵心童夺得斯诺克球员锦标赛冠军,苏格兰名将希金斯:他“绝对是个天才”

环球网资讯
2026-02-23 15:25:19
全省第一!常州霸榜!

全省第一!常州霸榜!

常州大喇叭
2026-02-24 11:08:28
男子大扫除把旧冰箱卖了,母亲傍晚回家告诉他:冰箱里有现金、金银首饰、玉器挂件,“把家底卖了”

男子大扫除把旧冰箱卖了,母亲傍晚回家告诉他:冰箱里有现金、金银首饰、玉器挂件,“把家底卖了”

犀利强哥
2026-02-23 17:19:04
一个只存在53天,不被任何国家承认的政权——中华共和国

一个只存在53天,不被任何国家承认的政权——中华共和国

何氽简史
2025-11-25 19:55:49
被打女孩至今半昏迷!打人夫妻彻底栽了,网友:比唐山打人案更狠

被打女孩至今半昏迷!打人夫妻彻底栽了,网友:比唐山打人案更狠

爱写的樱桃
2026-02-23 22:06:50
台大校长傅斯年:一生追求民主与真理,赴台湾后家人在大陆遭清算

台大校长傅斯年:一生追求民主与真理,赴台湾后家人在大陆遭清算

谈史论天地
2026-02-23 07:12:34
28岁乌克兰世界踢拳冠军牺牲前线:从拳台王者到卫国战士

28岁乌克兰世界踢拳冠军牺牲前线:从拳台王者到卫国战士

老马拉车莫少装
2026-02-18 00:36:06
大多数上海老人退休金并不高,主要表现是在68岁到80岁...

大多数上海老人退休金并不高,主要表现是在68岁到80岁...

白浅娱乐聊
2026-02-18 17:18:38
利物浦后悔了?迪亚斯制造进球数=萨拉赫+加克波+基耶萨+伊萨克

利物浦后悔了?迪亚斯制造进球数=萨拉赫+加克波+基耶萨+伊萨克

体坛八点半的那些事儿
2026-02-24 13:52:39
他是著名演员,从发病到去世仅20分钟,临终前也没听到儿子喊声爸

他是著名演员,从发病到去世仅20分钟,临终前也没听到儿子喊声爸

芳芳历史烩
2026-01-05 07:10:46
爆:中国电信员工晒2025年终奖工资单!

爆:中国电信员工晒2025年终奖工资单!

通信头条
2026-02-20 20:42:28
老挝待了三个月,我被问懵了:“你们中国人是不是都没有家?”

老挝待了三个月,我被问懵了:“你们中国人是不是都没有家?”

天下霸奇
2026-02-24 07:59:23
2026-02-24 14:40:49
建邺区生态科技岛人工智能商会
建邺区生态科技岛人工智能商会
南京市建邺区生态科技岛人工智能行业商会
246文章数 0关注度
往期回顾 全部

科技要闻

AI颠覆发展最新牺牲品!IBM跳水重挫超13%

头条要闻

牛弹琴:白宫突然发了张图 伤害性不大侮辱性极强

头条要闻

牛弹琴:白宫突然发了张图 伤害性不大侮辱性极强

体育要闻

苏翊鸣总结米兰征程:我仍是那个热爱单板滑雪的少年

娱乐要闻

杨洋传遇上缅北剧组 开机就离开剧组?

财经要闻

县城消费「限时繁荣」了十天

汽车要闻

入门即满配 威兰达AIR版上市 13.78万元起

态度原创

教育
本地
房产
时尚
公开课

教育要闻

孩子从拖延摆烂到班级前10,我开学前只盯3个细节,亲测有效

本地新闻

春花齐放2026:《骏马奔腾迎新岁》

房产要闻

窗前即地标!独占三亚湾C位 自贸港总裁行宫亮相

今年春天一定要拥有的针织,这样穿减龄又好看!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版