Blogger Information
Blog 18
fans 0
comment 0
visits 10948
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数据库与商城sql
手机用户1631860753
Original
820 people have browsed it

一.数据库

  • 前缀:文件名可以加下划线: 公司名-项目名-表名
  • 主键:一个表里的数据,每条数据都有的唯一的值
  • 在表里,如果是已经存在的id,或者新增的数据,被删除了,也不会重新计算
  • mysql 也可以像PHP那样写流程判断
  • mysql 关键字可以是大写也可以是小写,一般我们程序员默认的命令是大写,其他字段小写
  • 表名和字段名,用 `` 符号包裹
  • 值是用 ‘’ 单引号包裹

1.插入数据

  • 关键字: INSERT TNTO
    1. //第一种插入语句
    2. INSERT INTO `user`VALUES(NULL,'小红',18345647559,'2021-10-19 16:08:53',0)
    3. //第二种插入语句
    4. INSERT INTO `user`('id')VALUES(NULL)
    5. //第三种插入语句
    6. INSERT INTO `user`SET `name` = '小明' ,

2.查询数据

  • 关键字 SELECT
  • 查询是不改变数据库的数据的,插入,修改,删除,都要修改数据库中的数据
    1. // 直接查询表里的全部数据
    2. SELECT * FROM `user`
    2.1 运算符
  • 等于 = ,不等于 <> ,大于等于 >= ,小于等于 <=
    1. // 查询id 大于10 的
    2. SELECT * FROM `user` WHERE `id` > 10
    2.2 逻辑运算符
  • AND , OR , XOR
    1. // 查询小于6的 和 大于18的
    2. SELECT * FROM `user` WHERE `id` < 6 OR `id` >10
    2.3 逻辑非
  • NOT
    1. // 查询name 为空的数据
    2. SELECT * FROM `user` WHERE `name` IS NULL
    3. // 查询name 不为空的数据
    4. SELECT * FROM `user` WHERE `name` IS NOT NULL
    2.4 BETWEEN
  • BETWEEN 相当于取中间值
    1. // 获取 >=10 AND <=20 的值
    2. SELECT * FROM `user` WHERE `id` BETWEEN 10 AND 20
    3. // 获取除去 >=10 AND <=20 的值
    4. SELECT * FROM `user` WHERE `id` NOT BETWEEN 10 AND 20
    2.5 模糊查询
  • LIKE 模糊查询的关键字
  • _ 下划线代表你查询时输入多少个下划线,就查询你输入关键字加多少个下划线的字符
  • % 查询带有你输入关键字的所有数据
    1. // 查询 xiao 后面还有五个字符的数据
    2. SELECT * FROM `user` WHERE `account` LIKE 'xiao_____'
    3. // 查询所有带有a的数据
    4. SELECT * FROM `user` WHERE `account` LIKE '%a%'
    2.6 返回值
  • *号 会把所有返回值都返回

  • 例:

    1. SELECT`name`,`phone`,`age`FROM `user`WHERE`account`LIKE'%o%'
2.7 分页
  • LIMIT 关键字
    1. // 分页,当前页只看到查询内容的10条
    2. SELECT `name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' LIMIT 10
2.8 排序
  • ORDER BY 排序命令,默认是正序,从小到大
  • DESC 倒序,从大到小
    1. // 从小到大
    2. SELECT `id`,`name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' ORDER BY `id` LIMIT 0,10
    3. // 从大到小
    4. SELECT `id`,`name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' ORDER BY DESC `id` LIMIT 0,10

    3.修改

  • UPDATE 修改命令
  • 修改时一定要增加命令,不然会把所有数据都修改了
  • WHERE 命令,就是增加条件
  • WHERE条件,也可以用在,修改和删除里,但是不建议在mysql语句来修改和删除

    1. // 把第4条数据修改了
    2. UPDATE `user`SET `name` = '小李',`phone` = '12345678912'WHERE `id` = 4

4. 删除

  • DELETE 删除命令
  • 也要增加WHERE条件,不然它会把所有数据都删了
    1. // 把 id =5 的数据删除
    2. DELETE FROM `user` WHERE `id` = 5

二.php获取数据库

  • pdo 集合了, php data object ,统一了php访问各种类型数据库
  • $pdo = new PDO(数据源,用户名,密码);
    1. 连接数据库
  • dbname=php; php是库名
    1. $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
    2. var_dump($pdo);
2. 预处理sql语句
  • prepare 预处理sql语句,生成处理对象
  • ->是类的访问符号,访问类里的方法或者成员
    -例
    1. $pre = $pdo->prepare('SELECT * FROM `user`');
    2. var_dump($pre);
    3.执行sql语句
  • execute() 执行sql语句(读/写)
    1. $exe = $pre->execute();
    4.返回结果集
  • fetchAll() 返回结果集
    1. $data = $pre->fetchAll();
    5.防止连接出错\
  • try 执行 {} 里面的代码,如果出错就传给catch
    1. // 当数据库mysql没有开启是就会报错
    2. try {
    3. $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
    4. } catch (PDOException $e) {
    5. // 抛出错误,错误是你可要定义的
    6. echo '数据库连接失败' . $e->getMessage();
    7. }
6. 返回单条结果
  • fetch() 查询出来的是一维数组
    1. $pre = $pdo->prepare('SELECT * FROM `user`');
    2. $exe = $pre->execute();
    3. $data = $pre->fetch();
    4. print_r($data);
  • 效果
7.在php增加sql数据
    1. $pre = $pdo->prepare("INSERT INTO `user` VALUES (null, 'xiaoming', '123456', '小明', 18, '13843818908', 0, 0, 1)");
    2. $exe = $pre->execute();
    3. print_r($exe);
8. PDO 绑定参数
  • 防止sql注入:使用pdo,防止sql语句注入,比mysql函数安全很多
  • sql注入,就是用户把sql语句,写到表单中,提交到后台,后台如果没有判断,就会直接执行他传过来的sql语句
  • pdo 只要给个占位符 : ,在下面的代码中,传值给占位符

    1. $sql = 'INSERT INTO `user` SET `account`=:account,`password`=:password,`name`=:name,`phone`=:phone';
    2. $pre = $pdo->prepare($sql);
    3. // 在执行之前进行传值
  • bindParam 参数绑定,第三个参数:

    1. 占位符名
    2. 要给值的变量,绑定上,现在可以没有值
    3. 常量,pdo预定义常量,可以设置这个值的类型, 访问方式: PDO:: ,是类的常量访问方式
      PARAM_STR 字符串
      PARAM_INT 整数
    1. // 增加数据,并获取增加的id值
    2. $pre->bindParam('account', $account, PDO::PARAM_STR);
    3. $pre->bindParam('password', $password, PDO::PARAM_STR);
    4. $pre->bindParam('name', $name, PDO::PARAM_STR);
    5. $pre->bindParam('phone', $phone, PDO::PARAM_INT);
    6. $account = 'xiaozhao';
    7. $password = md5('123456');
    8. $name = '小赵';
    9. $phone = 18715745675;
    10. $exe = $pre->execute();
    11. if(!$ese){
    12. print_r($pre->errorInfo());
    13. }else{
    14. // rowCount 获取是否成功,影响数量
    15. echo $pre->rowCount();
    16. echo '<hr>';
    17. // lastInsertId 获取这次自增的ID 类,是用连接的类,是$pdo
    18. echo $pdo->lastInsertId();
    19. }
    9.占位符
  • ? 占位符 与 : 明文占位符
  • ? 占位,数组传值,并且不需要绑定数据,直接在 execute 里传数组

    1. // ? 占位符
    2. // 添加一条数据
    3. $sql = 'INSERT INTO `user` SET `account`=?,`password`=?,`name`=?,`phone`=?';
    4. $pre = $pdo->prepare($sql);
    5. $exe = $pre->execute([
    6. 'xiaoli',
    7. md5(123456),
    8. '小李',
    9. 13345753547
    10. ]);
    11. if (!$exe) {
    12. print_r($pro->errorInfo());
    13. } else {
    14. echo $pre->rowCount();
    15. echo '<hr>';
    16. echo $pdo->lastInsertId();
    17. }
    1. // : 明文占位符
    2. $sql = 'INSERT INTO `user` SET `account`=:account,`password`=:password,`name`=:name,`phone`=:phone';
    3. $pre = $pdo->prepare($sql);
    4. $exe = $pre->execute([
    5. ':account' => 'xiaolong',
    6. ':password' => md5(123456),
    7. ':name' => '小龙',
    8. ':phone' => 18654215366
    9. ]);
    10. if (!$exe) {
    11. print_r($pro->errorInfo());
    12. } else {
    13. echo $pre->rowCount();
    14. echo '<hr>';
    15. echo $pdo->lastInsertId();
    16. }

三.商城项目

用户表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_yh
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_yh`;
  7. CREATE TABLE `shop_yh` (
  8. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  9. `account` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  10. `password` char(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  11. `phone` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  12. `gender` char(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  13. PRIMARY KEY (`id`) USING BTREE
  14. ) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
  15. SET FOREIGN_KEY_CHECKS = 1;

商品表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_sp
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_sp`;
  7. CREATE TABLE `shop_sp` (
  8. `id` int(10) NOT NULL,
  9. `spmc` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  10. `spxx` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  11. `spbh` char(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  12. `spjg` decimal(10, 0) NULL DEFAULT NULL,
  13. `sccj` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  14. PRIMARY KEY (`id`) USING BTREE
  15. ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
  16. SET FOREIGN_KEY_CHECKS = 1;

订单表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_ddb
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_ddb`;
  7. CREATE TABLE `shop_ddb` (
  8. `id` int(10) NOT NULL,
  9. `ddbh` char(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  10. `yhid` int(10) NULL DEFAULT NULL,
  11. `spbh` char(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  12. `spsl` int(10) NULL DEFAULT NULL,
  13. `spjg` decimal(10, 0) NULL DEFAULT NULL,
  14. PRIMARY KEY (`id`) USING BTREE
  15. ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Fixed
  16. SET FOREIGN_KEY_CHECKS = 1;
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post