博客列表 >PHP 使用 PDO 连接数据库并使用预处理方式遍历数据

PHP 使用 PDO 连接数据库并使用预处理方式遍历数据

司马青衫
司马青衫原创
2020年07月23日 14:12:191014浏览

PHP 使用 PDO 连接数据库并使用预处理方式遍历数据

PDO 复习

  • POD 为访问数据库建立了统一的接口 即不管使用哪种数据库 都可以用相同的方法来查询获取数据
  • PDO 的使用步骤有:
    • 1.定义一个 PDO 的数据源名 包括主机名端口号和数据库名称
      • define('DB_DSN', "mysql:host=localhost;dbname=db_users;charset=utf8");
      • $dsn = 'mysql:host=localhost;dbname=db_users;charset=utf8';
    • 2.实例化一个 PDO 对象 并连接数据库
      • $pdo = new PDO(DB_DSN, 'root', 'root');
    • 3.使用 SQL 语句、PDO 的方法对数据库进行基本操作
  • SQL 数据表增查改删
    • 往数据表中某些项目插入某些值"INSERT INTO 数据表名(项目名) VALUES(值)";
    • 根据指定条件从数据表中查找某些值"SELECT 查找列表 FROM 数据表名 WHERE 条件";
    • 根据指定条件从数据表中修改某些值"UPDATE 数据表名 项目名=值,... WHERE 条件";
    • 根据指定条件从数据表中删除某些值"DELETE FROM 数据表名 WHRER 条件";
  • POD 方法
    • 执行 SQL 语句:
      • exec():返回执行 SQL 语句后受影响的行数 通常用于UPDATEINSERTDETLETE语句中
      • query():返回执行 SQL 查询语句后的结果集 pdostament 对象
      • prepare():预处理语句 准备要执行的 SQL 语句 返回语句对象
      • execute():预处理语句 执行经过prepare()预处理后的语句
    • 获取结果集
      • fetch():获取结果集中的第一行记录
      • fetchAll():获取结果集中的所有记录
        • 控制返回记录的可选方式有PDO::FETCH_ASSOCPDO::FETCH_NUMPDO::FETCH_BOTH
    • 错误处理
      • errorCode():执行 SQL 语句时发生的错误代码
      • errorInfo():执行 SQL 语句时发生的错误信息
    • 参数绑定:在执行 PDO 预处理时可以使用参数绑定
      • bindParam():将变量绑定给参数
      • bindValue():将值绑定给参数

作业

  • 使用 pdo 类的对象去连接数据库,然后使用 PDO 对象中的 prepare()方法获取 PDOStatement 对象, 接着使用 PDOStatement 对象的成员方法将获得的结果集中的数据(二维数组)遍历出来,渲染到表格中。
  1. <?php
  2. //定义PDO的数据源名称 包含主机名称、端口号、数据库名称、客户端字符集等
  3. define('DB_DSN', "mysql:host=localhost;dbname=db_users;charset=utf8");
  4. try{//捕获异常
  5. //实例化对象
  6. $pdo = new PDO(DB_DSN, 'root', 'root');
  7. }catch(PDOException $e){
  8. echo $e->getMessage();
  9. }catch(Throwable $e){
  10. echo $e->getMessage();
  11. }
  12. //定义SQL语句 在`tb_member`中查询年龄大于一定值的数据
  13. $sql = "SELECT * FROM `tb_member` WHERE `age`>?";
  14. //预处理SQL语句 防止SQL注入
  15. $stmt = $pdo->prepare($sql);
  16. //参数绑定 从POST表单中获取用户输入的最小年龄
  17. $stmt->bindParam(1,$_POST['age']);
  18. //执行预处理语句
  19. $stmt->execute();
  20. //以关联数组方式获取所有查询到的信息
  21. $arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22. ?>
  23. <!DOCTYPE html>
  24. <html lang="en">
  25. <body style="text-align:center;">
  26. <form action="" method="post">
  27. <input type="number" name="age" placeholder="请输入最小年龄">
  28. <input type="submit" >
  29. </form>
  30. <hr>
  31. <?php if(!empty($arr)){ ?>
  32. <h4>用户信息</h4>
  33. <table align='center' border='1' cellspacing='0'>
  34. <thead>
  35. <tr>
  36. <th>ID</th>
  37. <th>用户名</th>
  38. <th>年龄</th>
  39. <th>注册时间</th>
  40. </tr>
  41. </thead>
  42. <tbody>
  43. <?php foreach($arr as $val){ ?>
  44. <tr>
  45. <td><?php echo $val['id']; ?></td>
  46. <td><?php echo $val['username']; ?></td>
  47. <td><?php echo $val['age']; ?></td>
  48. <td><?php echo $val['createtime']; ?></td>
  49. </tr>
  50. <?php } ?>
  51. </tbody>
  52. </table>
  53. <?php }?>
  54. </body>
  55. </html>

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