博主信息
博文 62
粉丝 7
评论 2
访问量 74138
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
MySQL 数据库入门(PDO)
我是郭富城
原创
916人浏览过

MySQL 数据库入门

1. 基本的 CURD 练习

1.1 配置数据库的基本参数

  • 这一块是连接数据库的参数
  • 可以设置默认参数

    这一块一般都是在安装一个程序的安装界面会提示用户输入相关的信息

  1. <?php
  2. namespace pdo_edu;
  3. //数据库连接配置参数
  4. return [
  5. //数据库类型
  6. 'type' => $type ?? 'mysql',
  7. //主机
  8. 'host' => $host ?? 'localhost',
  9. //数据库名
  10. 'dbname' => $dbname ?? 'php',
  11. //默认字符编码集
  12. 'charset' => $charset ?? 'utf8',
  13. //连接端口
  14. 'port' => $port ?? '3306',
  15. //连接用户名
  16. 'username' => $username ?? 'root',
  17. //连接密码
  18. 'password' => $password ?? 'root123456'
  19. ];
  20. // print_r($config);

1.2 PDO 数据库连接

  • 两种方式创建数据源\$dsn
  • 直接打印:$dsn = sprintf('%s:host=%s;dbname=%s', $type, $host, $dbname);
  • 字符串拼接:$dsn = $type . ':' . 'host=' . $host . ';dbname=' . $dbname;
  1. <?php
  2. // 连接数据库
  3. namespace pdo_edu;
  4. use Exception;
  5. use PDO;
  6. // 加载配置参数
  7. $config = require 'config.php';
  8. // PDO: PHP Data Object, php数据对象
  9. // pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口
  10. // PDO连接数据库三要素, 三个重要参数,
  11. // 数据源: DSN
  12. // 用户名: username
  13. // 用户密码: password
  14. // DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...
  15. // $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';
  16. $type = $config['type'];
  17. $host = $config['host'];
  18. $dbname = $config['dbname'];
  19. $username = $config['username'];
  20. $password = $config['password'];
  21. // 创建DSN
  22. $dsn = sprintf('%s:host=%s;dbname=%s', $type, $host, $dbname);
  23. // $dsn = $type . ':' . 'host=' . $host . ';dbname=' . $dbname;
  24. try {
  25. // 连接数据库
  26. $pdo = new PDO($dsn, $username, $password);
  27. // var_dump($pdo);
  28. } catch (Exception $e) {
  29. die($e->getMessage());
  30. }

1.3 PDO 增加数据

  • 两种写法
  • $sql = "INSERTusersSETname=?,age=?";

  • $sql = "INSERT INTOusersVALUES (null,?,?)";

  1. <?php
  2. // 数据表查询: 新增数据
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // $sql = 'INSERT 表名 SET name=?,age=?...';
  8. $sql = "INSERT `users` SET `name`=?,`age`=?";
  9. //第二种方式
  10. $sql = "INSERT INTO `users` VALUES (null,?,?)";
  11. $stmt = $pdo->prepare($sql);
  12. $data = ['无敌韦小宝12', 66];
  13. $stmt->execute($data);
  14. // $stmt->rowCount():受影响的记录数
  15. if ($stmt->rowCount() === 1) {
  16. echo '新增成功,新增记录的主键:' . $pdo->lastInsertId();
  17. } else {
  18. echo '新增失败';
  19. print_r($stmt->errorInfo());
  20. }
  21. unset($pdo);

1.4 PDO 删除数据

  • $sql="DELETE FROM 表名 WHERE 删除条件 "
  1. <?php
  2. // 数据表更新操作
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // $sql="DELETE FROM 表名 WHERE 删除条件 "
  8. $sql = "DELETE FROM `users` WHERE `id`= ? ";
  9. $stmt = $pdo->prepare($sql);
  10. $data = ['10'];
  11. $stmt->execute($data);
  12. // $stmt->rowCount():受影响的记录数
  13. if ($stmt->rowCount() === 1) {
  14. echo '删除成功';
  15. }
  16. unset($pdo);

1.5 PDO 修改数据

  • $sql="UPDATE 表名 SET 字段=新的值 WHERE 更新条件 "
  1. <?php
  2. // 数据表更新操作
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // $sql="UPDATE 表名 SET 字段=新的值 WHERE 更新条件 "
  8. $sql = "UPDATE `users` SET `name`= ? WHERE `id`= ? ";
  9. $stmt = $pdo->prepare($sql);
  10. $data = ['无敌是多么寂寞', 8];
  11. $stmt->execute($data);
  12. // $stmt->rowCount():受影响的记录数
  13. if ($stmt->rowCount() === 1) {
  14. echo '更新成功';
  15. } else {
  16. echo '更新失败';
  17. print_r($stmt->errorInfo());
  18. }
  19. unset($pdo);

1.6 PDO 查询数据

  • $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  1. <?php
  2. // 数据表查询: 多条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // echo '成功了';
  8. // 2. 操作数据表(CURD)
  9. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  10. //匿名占位符
  11. // $sql = 'SELECT * FROM `users` WHERE `age` < ?';
  12. //命名占位符
  13. $sql = 'SELECT * FROM `users` WHERE `age` < :age';
  14. // 预处理对象$stmt:为了防止 SQL注入
  15. $stmt = $pdo->prepare($sql);
  16. // 预处理对象$stmt , 就是SQL语句对象
  17. // 使用预处理对象调用 execute()执行这条sql语句
  18. // 对应匿名占位符,索引数组
  19. // $stmt->execute([18]);
  20. // 对应命名占位符,使用关联数组
  21. $stmt->execute([':age' => 15]);
  22. $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
  23. // print_r($users);
  24. foreach ($users as $user) {
  25. printf('id=%s:姓名:%s---年龄=%s<br>', $user['id'], $user['name'], $user['age']);
  26. }
  27. //3.关闭数据库
  28. unset($pdo);

2.总结

数据库的增删改查工作是最基本也是最常用的,随着框架的发展,开发人员已经很少会使用这些指令了,数据库的功能仅仅就是储存数据,读和写的操作。PDO 是一个很好的连接数据库操作方法,有效的防止基本的 SQL 语句注入,但同样如果从一些未定义的类访问也会造成漏洞的存在,相对来说功能会越来越完善的。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:还要多加练习呀
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学