博客列表 >PHP扩展知识:PDO数据库操作

PHP扩展知识:PDO数据库操作

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年05月08日 23:02:12855浏览

PDO代码练习

1、PDO连接

  1. <?php
  2. namespace db_PDO;
  3. use Exception;
  4. use PDO;
  5. // 准备连接数据
  6. $arguments= require 'config.php';
  7. extract($arguments);
  8. $dsn=sprintf("{$type}:host={$host};dbname={$dbname};charset={$charset};port={$port}",$type,$host,$dbname,$charset,$port);
  9. // 连接数据库
  10. try{
  11. $db= new PDO($dsn,$username,$password);
  12. }catch(Exception $e)
  13. {
  14. echo $e->getMessage();
  15. }
  16. /*
  17. 测试连接
  18. // var_dump($db);
  19. $sql='select * FROM `students`';
  20. $smit=$db->query($sql);
  21. // $res=$smit->fetch(PDO::FETCH_ASSOC);
  22. // print_r($res);
  23. $res=$smit->fetchAll(PDO::FETCH_NUM);
  24. print_r($res);
  25. // 关闭数据库
  26. // $db=null;
  27. unset($db);
  28. */

2、PDO插入数据

  1. <?php
  2. require 'contect.php';
  3. // 准备查询语句;
  4. $sql="insert `students` SET `name`=?,`age`=?,sex=? ";
  5. // sql语句预处理
  6. $stmt=$db->prepare($sql);
  7. // var_dump($stmt);
  8. $data=['cqw',30,1];
  9. // 执行预处理语句;
  10. $stmt->execute($data);
  11. // $stmt->debugDumpParams();
  12. echo ($stmt->rowCount()===1)?'新增成功,新增的id是:'.$db->lastInsertId() : '新增失败'.$stmt->errorInfo();
  13. unset($db);

3、PDO更新操作

  1. <?php
  2. require 'contect.php';
  3. // 准备查询语句;
  4. $sql="update `students` SET `name`=?,`age`=?,sex=? WHERE `id`=?";
  5. // sql语句预处理
  6. $stmt=$db->prepare($sql);
  7. // var_dump($stmt);
  8. $data=['xjw',31,1,3];
  9. // 执行预处理语句;
  10. $stmt->execute($data);
  11. // $stmt->debugDumpParams();
  12. echo ($stmt->rowCount()===1) ? '更新成功': '更新失败';
  13. unset($db);

4、PDO查询操作

  1. <?php
  2. require 'contect.php';
  3. // 准备查询语句;
  4. $sql='select * FROM `students`';
  5. // sql语句预处理
  6. $stmt=$db->prepare($sql);
  7. // var_dump($stmt);
  8. // 执行预处理语句;
  9. $stmt->execute();
  10. /*
  11. 返回单条数据,指针下移
  12. $res=$stmt->fetch(PDO::FETCH_ASSOC);
  13. printf('<pre>%s</pre>',print_r($res,true));
  14. $res=$stmt->fetch(PDO::FETCH_ASSOC);
  15. printf('<pre>%s</pre>',print_r($res,true));
  16. */
  17. $res=$stmt->fetchAll(PDO::FETCH_ASSOC);
  18. printf('<pre>%s</pre>',print_r($res,true));
  19. unset($db);

5、PDO删除数据

  1. <?php
  2. require 'contect.php';
  3. // 准备查询语句;
  4. $sql="delete FROM `students` WHERE `id`=?";
  5. // sql语句预处理
  6. $stmt=$db->prepare($sql);
  7. // var_dump($stmt);
  8. $data=[$_GET['id']];
  9. // 执行预处理语句;
  10. $stmt->execute($data);
  11. // $stmt->debugDumpParams();
  12. echo ($stmt->rowCount()===1) ? '更新成功': '更新失败';
  13. unset($db);

总结:

1.PDO操作数据库连接所需参数($db=new PDO($dsn,$username,$password)):

  1. $dsn='type:host=$host;dbname=$dbname;charset=$charset;port=$port;'
  2. $username='phpedu';
  3. $password;

2.PDO 预处理(prepare()):$stmt=$db->prepare($sql);
3.PDO 执行(execute()):$stmt->execute();
4.PDO断开连接:$db=null或者unset($db);
5.数据库增删改查语句():

  1. 增加:INSERT `表名` SET `字段`='值'....`字段`='值';
  2. 删除:DELETE FROM `表名` WHERE `字段`='值';
  3. 更新: UPDATE `表名` SET `字段`='值'....`字段`='值'WHERE `字段`='值';
  4. 查询:SELECT * FROM `表名` where `字段`='值';*可以替换需要查询字段

6.在sql语句中可以用(?->数组对应),(:age跟关联数组对应)代替,进行prepare($sql)预处理,在execute($data);绑定数据;
7.查询时返回的结果集可以通过fetch()或者fetchAll()来返回(PDO::FETCH_ASSOC|FETCH_NUM|FETCH_BOTH)
8.$stmt->rowCount():受影响的行数;PDO::lastInsertId():最后插入ID号;
9.$stmt->errorInfo():错误信息;$stmt->errorCode():错误代码;

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