博客列表 >MySQL 数据库入门(PDO)

MySQL 数据库入门(PDO)

我是郭富城
我是郭富城原创
2020年05月08日 04:09:08716浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议