博客列表 >PHP:初试PDO之CURD

PHP:初试PDO之CURD

楷
原创
2020年05月10日 10:37:30646浏览

PDO 之 CURD 实例

PDO 是数据库的访问接口

一、数据库连接

  1. <?php
  2. // 连接数据库
  3. namespace pdo_edu;
  4. //以下两句是自动写的(当写完24-27句)
  5. use Exception;
  6. use PDO;
  7. // 加载连接参数文件
  8. $config = require __DIR__ . '/config/database.php';
  9. var_dump($config) ;
  10. printf('<pre>%s</pre>',print_r($config,true));
  11. // PDO 是所有类型数据库的访问接口,连接的三要素:
  12. // DSN(数据源)、用户名、密码。
  13. $type = $config ['type'];
  14. $host = $config ['host'];
  15. $dbname = $config ['dbname'];
  16. $username = $config ['username'];
  17. $password = $config ['password'];
  18. // 创建DSN
  19. $dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);
  20. try
  21. {
  22. //连接数据库
  23. $pdo = new PDO($dsn,$username,$password);
  24. var_dump($pdo);
  25. }catch (Exception $e){
  26. die($e->getMessage());
  27. }

实例效果

单条查询

  1. <?php
  2. // 单条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1.连接数据库
  6. require 'connect-exe.php';
  7. // 2.查询数据库(查询语句)
  8. $sql = 'SELECT * FROM `table01` where `age`>15';
  9. // 预处理:预处理对象$stmt , 就是SQL语句对象.防止SQL注入攻击
  10. $stmt = $pdo->prepare($sql);
  11. // var_dump($stmt);
  12. // printf('<pre>%s</pre>',print_r($stmt,true));
  13. // 使用预处理对象调用 execute()执行这条sql语句
  14. $stmt->execute();
  15. // printf('<pre>%s</pre>',print_r($stmt,true));
  16. //查询一条记录.PDO::FETCH_ASSOC表示只查询关联部分。
  17. $hero = $stmt->fetch(PDO::FETCH_ASSOC);
  18. var_dump($hero);
  19. printf('<pre>%s</pre>',print_r($hero,true));
  20. // 3.关闭数据库
  21. unset($pdo);

实例效果

多条查询

  1. <?php
  2. // 多条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1.连接数据库
  6. require 'connect-exe.php';
  7. // 2.操作数据库
  8. $sql = 'SElECT * FROM `table01` where `age`>15';
  9. // 预处理对象$stmt就是SQL语句对象:为了防止 SQL注入
  10. $stmt = $pdo->prepare($sql);
  11. // 使用预处理对象调用 execute()执行这条sql语句
  12. $stmt->execute();
  13. //查询多条记录用fecthAll。PDO::FETCH_ASSOC表示只查询关联部分。
  14. $hero = $stmt->fetchAll(PDO::FETCH_ASSOC);
  15. printf('<pre>%s</pre>',print_r($hero,true));
  16. // 3.关闭数据库
  17. unset($pdo);

实例效果

新增数据

  1. <?php
  2. // 新增数据
  3. namespace pdo_edu;
  4. use PDO;
  5. require 'connect-exe.php';
  6. $sql = 'insert `table01` set `name`=?,`skill`=?,`age`=?';
  7. $stmt = $pdo->prepare($sql);
  8. $data = ['老顽童','左右互搏',65];
  9. $stmt->execute($data);
  10. // 判断是否执行成功
  11. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  12. if($stmt->rowCount()===1){
  13. echo '新增成功!新增记录的主键是: '.$pdo->lastInsertId();
  14. }else{
  15. echo '新增失败!';
  16. print_r($stmt->errorInfo());
  17. }
  18. unset($pdo);

实例效果

更新数据

  1. <?php
  2. // 更新数据
  3. namespace pdo_edu;
  4. use PDO;
  5. require 'connect-exe.php';
  6. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
  7. $sql = "UPDATE `table01` set `skill`=? where `id`=?";
  8. $stmt = $pdo->prepare($sql);
  9. $data = ['九阳神功',8];
  10. $stmt->execute($data);
  11. print_r($stmt->errorInfo());
  12. die;
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '更新成功';
  17. } else {
  18. echo '没有记录被更新';
  19. print_r($stmt->errorInfo());
  20. }
  21. // 3. 关闭连接[可选]
  22. unset($pdo);
  23. ![](https://img.php.cn/upload/image/186/431/913/1589077396676775.jpg)

删除数据

  1. <?php
  2. // 删除数据
  3. namespace pdo_edu;
  4. use PDO;
  5. require 'connect-exe.php';
  6. // $sql = "DELETE FROM 表名 WHERE 删除条件"
  7. $sql = "delete from `table01` where `id`=8";
  8. $stmt = $pdo->prepare($sql);
  9. $stmt->execute();
  10. if($stmt->rowCount()===1){
  11. echo '删除成功';
  12. }
  13. print_r($stmt->errorInfo());
  14. unset($pdo);

实例效果

总结:
1.经典案例:背背背,写写写。细细体会!
2.数据库知识薄弱,用得少,有些基本概念混淆了,比如查询时用数据库名来查,老是出错,后来才发现应该用表名查,所以说多练多写才能记住。
3.foreach()函数不是很熟,写不出数组的另一种打印格式。看来要找一本php函数大全来查找用法。
4.更新数据的时候,发现只能更新一个字段,两个以上会提示出错,不知为何?而且没有提示成功的字样。???

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议