作业内容:

1. 实例演示数据库的CURD操作

  1. <?php
  2. namespace pdo_edu;
  3. //var_dump($db); 测试是否连接成功
  4. /**
  5. * 数据库常用操作
  6. * 1. 读操作: select
  7. * 2. 写操作: insert,update,delete
  8. * 简称: CURD, 增删改查
  9. */
  10. //1、连接数据库
  11. //require __DIR__.'/hw.php';
  12. use PDO;
  13. /**操作数据库三步:
  14. * 1、连接数据库
  15. * 2、增删改查CURD
  16. * 3、关闭连接
  17. */
  18. //DSN:数据库的配置参数,类型,主机名,默认数据库,端口号,默认字符编码
  19. // $dbConfig = require __DIR__.'/myconfig.php';
  20. $dbConfig =[
  21. 'type'=>'mysql',
  22. 'host' => 'localhost',
  23. 'dbname' => 'testsql',
  24. 'port'=>'3306',
  25. 'charset'=>'utf8',
  26. 'username' => 'zolo',
  27. 'password' => '123456'
  28. ];
  29. //import variables into the current symbol table from an array
  30. extract($dbConfig);
  31. // Source Host : localhost:3306
  32. // Source Schema : zolotest
  33. $db = new PDO("$type:host=$host;port=$port;dbname=$dbname;charset=$charset",$username,$password);
  34. //$db = new PDO($dsn,$username,$password);
  35. //2、操作
  36. // 新增操作
  37. $sql = 'INSERT `users` SET `name` = ?,`dept`= ?,`grade`= ?';
  38. $stmt = $db->prepare($sql);
  39. if($stmt ->execute(['zolo','SaaS','7'])){
  40. $stmt ->execute(['test','Air','6']);
  41. $stmt ->execute(['tony','Air','3']);
  42. $stmt ->execute(['miny','SaaS','6']);
  43. $stmt ->execute(['galen','Air','2']);
  44. $stmt ->execute(['rita','SaaS','6']);
  45. $stmt ->execute(['selina','Air','1']);
  46. if($stmt->rowCount()>0){
  47. echo "执行成功<br>";
  48. }else{
  49. echo "rowCount失败<br>";
  50. print_r($stmt->errorInfo());
  51. }
  52. }else{
  53. echo "execute执行失败<br>";
  54. print_r($stmt->errorInfo());
  55. }
  56. //更新操作
  57. $sql = 'UPDATE `users` SET `name` = ? where `id`=?';
  58. $stmt = $db->prepare($sql);
  59. if($stmt ->execute(['sss',1])){
  60. if($stmt->rowCount()>0){
  61. echo "更新成功<br>";
  62. }else{
  63. echo "rowCount失败<br>";
  64. print_r($stmt->errorInfo());
  65. }
  66. }else{
  67. echo "execute更新失败<br>";
  68. print_r($stmt->errorInfo());
  69. }
  70. //删除操作
  71. $sql = 'DELETE from `users` WHERE `id` = ? ';
  72. // 对应传参:[2]
  73. //$sql = 'DELETE from `users` WHERE `id` = :id ';
  74. //对应传参:([':id'=>2]
  75. $stmt = $db->prepare($sql);
  76. //$_GET['id']获取传参id http://php19.edu/426/hw1.php?id=3
  77. if($stmt ->execute([$_GET['id']])){
  78. if($stmt->rowCount()>0){
  79. echo "删除成功<br>";
  80. }else{
  81. print_r($stmt->errorInfo());
  82. echo "rowCount失败<br>";
  83. }
  84. }else{
  85. echo "execute删除失败<br>";
  86. print_r($stmt->errorInfo());
  87. }

  1. //查询操作
  2. //单条查询
  3. $sqlquery = "select * from `users` where `dept` = 'SaaS'";
  4. $stmt = $db->prepare($sqlquery);
  5. if($stmt ->execute()){
  6. if($stmt->rowCount()>0){
  7. $res = $stmt->fetch(PDO::FETCH_ASSOC);
  8. echo "单条查询成功:<br>";
  9. printf('<pre>%s</pre>',print_r($res,true));
  10. }else{
  11. echo "rowCount失败<br>";
  12. print_r($stmt->errorInfo());
  13. }
  14. }else{
  15. echo "execute查询失败<br>";
  16. print_r($stmt->errorInfo());
  17. }
  18. //多条查询
  19. if($stmt ->execute()){
  20. if($stmt->rowCount()>0){
  21. $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22. echo "批量查询成功:<br>";
  23. foreach($res as $user){
  24. printf('<pre>%s</pre>',print_r($user,true));}
  25. }else{
  26. echo "rowCount失败<br>";
  27. print_r($stmt->errorInfo());
  28. }
  29. }else{
  30. echo "execute查询失败<br>";
  31. print_r($stmt->errorInfo());
  32. }
2. 描述PDO的本质与原理是什么?为什么要用预处理?
  1. PHP 数据对象 PDO 扩展为PHP访问数据库定义了一个轻量级的一致接口。
  2. PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
  3. /**
  4. * PDO预处理
  5. * 为什么要用预处理?
  6. * 1. 防止SQL注入攻击, 2. 数据延迟绑定
  7. * (编程时只写SQL语句模板,执行SQL时再给占位符绑定真实数据)
  8. * 预处理过程:
  9. * 1. 创建SQL语句模板对象: 数据使用占位符表示
  10. * 2. 执行SQL语句,根据操作类型(写/读),读返回结果集/数组, 写返回受影响的记录数量
  11. */

更多相关文章

  1. 如何使用Jdbc和Servlet操作Mysql数据库,编写Android登录注册服务
  2. 学习笔记:Android(安卓)SQLite,并实现SQLite基本CRUD操作的Demo
  3. Android中经常用到的方法--SDcard下文件的操作
  4. Android操作HTTP实现与服务器通信
  5. php:1. 单文件上传与多文件上传 2. 简单分页操作,分页所需参数的
  6. 单文件上传与多文件上传,简单分页操作的实例演示
  7. Android(安卓)SD卡创建文件和文件夹失败
  8. mysql:1. 实例演示数据库的CURD操作 2. 描述PDO的本质与原理是什
  9. 实例演示数据库的CURD操作及PDO的本质与原理

随机推荐

  1. android NDK install and config in ubun
  2. 使用命令行创建Android模拟器
  3. Android人脸识别技术
  4. android anr导出崩溃文件
  5. Android硬件访问服务-Service
  6. Android中横竖屏、全屏、无标题设置
  7. 2010.11.27———android 展示网络上的图
  8. Android中的集中常用布局方式和按钮事件
  9. LayoutAnimation
  10. 在Android上执行Java程序