Blogger Information
Blog 39
fans 0
comment 0
visits 30661
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:初试PDO之CURD
Original
647 people have browsed it

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.更新数据的时候,发现只能更新一个字段,两个以上会提示出错,不知为何?而且没有提示成功的字样。???

Correcting teacher:天蓬老师天蓬老师

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