博客列表 >了解PDO连接数据库操作并使用statement对象对象方法获得结果集并遍历(0716)

了解PDO连接数据库操作并使用statement对象对象方法获得结果集并遍历(0716)

丶久而旧之丶
丶久而旧之丶原创
2020年08月01日 23:54:10758浏览

PDO(数据访问抽象层,统一各种数据库访问方法)

1.先写一个数据库的配置文件,方便数据库连接和数据库和数据库的修改(定义常量)

  1. <?php
  2. // 数据库的型号
  3. define('DB_TYPE', 'mysql');
  4. // 数据库主机名
  5. define('DB_HOST', 'localhost');
  6. // 数据库用户名
  7. define('DB_USER', 'root');
  8. // 数据库密码
  9. define('DB_PSD', 'root');
  10. // 数据库名称
  11. define('DB_NAME', 'user');
  12. // 数据库端口号
  13. define('DB_PORT', 3306);
  14. // 数据库的编码集
  15. define('DB_CHARSET', 'utf8');
  16. // 定义pdo中dsn的主机名,数据库型号,数据库名和编码方式
  17. define('DB_DSN', DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET);

2.连接数据库并进行增,删,改,查操作

  1. <?php
  2. // 引用数据库配置文件
  3. require "config.php";
  4. try {
  5. // 使用pdo进行数据库连接
  6. $pdo = new PDO(DB_DSN, DB_USER, DB_PSD);
  7. } catch (PDOException $a) {
  8. // 捕捉pdo连接数据库错误
  9. echo $a->getMessage();
  10. }
  11. // 更新数据
  12. $sql = "UPDATE `apple` SET `username`='小喜', `sex`='女' WHERE `username`='小马'";
  13. // 插入数据
  14. $sql1 = "INSERT INTO apple(`username`,`password`,`sex`) VALUES('小哈',sha1(777777),'男')";
  15. // 删除数据
  16. $sql2 = "DELETE FROM `apple` WHERE `id`=16";
  17. // 执行sql语句
  18. // exec()执行UPDATE,INSECT,DELETEsql语句并返回受影响的行数
  19. var_dump($pdo->exec($sql));
  20. echo '<br>';
  21. var_dump($pdo->exec($sql1));
  22. echo '<br>';
  23. var_dump($pdo->exec($sql2));

  • 使用query()方法执行返回结果集
  1. <?php
  2. $sql = " SELECT *FROM `apple` WHERE `id`>10";
  3. // 用qurey()执行sql语句会以statement对象形式返回结果集
  4. $stmt = $pdo->query($sql);
  5. // 循环遍历对象
  6. echo '<table border=1>';
  7. echo '<tr>';
  8. echo '<td>' . 'id' . '</td>';
  9. echo '<td>' . '用户名' . '</td>';
  10. echo '<td>' . '密码' . '</td>';
  11. echo '<td>' . '性别' . '</td>';
  12. echo '</tr>';
  13. foreach ($stmt as $v) {
  14. echo '<tr>';
  15. echo '<td>' . $v['id'] . '</td>';
  16. echo '<td>' . $v['username'] . '</td>';
  17. echo '<td>' . $v['password'] . '</td>';
  18. echo '<td>' . $v['sex'] . '</td>';
  19. echo '</tr>';
  20. }
  21. echo '</table>';

预处理机制

1.使用?参数占位符或者命名参数占位符后绑定值到变量中

  1. <?php
  2. // 准备sql语句(使用?参数占位符)
  3. $sql = "SELECT * FROM `apple` WHERE `id`=?";
  4. // 准备执行sql语句
  5. $stmt = $pdo->prepare($sql);
  6. $id = 5;
  7. // 绑定参数到变量中
  8. $stmt->bindParam(1, $id);
  9. // 执行预处理语句
  10. $stmt->execute();
  11. // 查看受影响的行数
  12. echo $stmt->rowCount();
  13. foreach ($stmt as $v) {
  14. var_dump($v);
  15. }
  16. // 准备sql语句(使用命名参数占位符)
  17. $sql = "SELECT * FROM `apple` WHERE `id`=:id";
  18. // 准备执行sql语句
  19. $stmt = $pdo->prepare($sql);
  20. $id = 5;
  21. // 绑定参数到变量中
  22. $stmt->bindParam(':id', $id);
  23. // 执行预处理语句
  24. $stmt->execute();
  25. // 查看受影响的行数
  26. echo $stmt->rowCount();
‘?’参数占位符

命名参数占位符

  • 把一个值绑定到参数中并获得结果集(fetch()返回第一行数据,fetchAll()返回全部行数据)
  1. <?php
  2. // 把一个值绑定到参数中
  3. // 准备sql语句(也可以用命名参数占位符)
  4. $sql = "SELECT * FROM `apple` WHERE `id`=?";
  5. // 准备执行sql语句
  6. $stmt = $pdo->prepare($sql);
  7. // 绑定值到参数中
  8. $stmt->bindValue(1, 5);
  9. // 执行预处理语句
  10. $stmt->execute();
  11. // 查看受影响的行数
  12. echo $stmt->rowCount();
  13. // 使用fetch返回结果中的第一个数据
  14. echo '<pre>' . print_r(($stmt->fetch(PDO::FETCH_ASSOC)), true) . '</pre><hr>';
  15. // 使用fetchAll()获取结果集
  16. echo '<pre>' . print_r(($stmt->fetchAll(PDO::FETCH_ASSOC)), true) . '</pre>';
  17. // 返回跟数据库句柄上一次操作相关的一个5位数组成SQLSTATE码
  18. var_dump($stmt->errorCode());
  19. echo '<hr>';
  20. // 返回跟数据库句柄上一次操作相关的一个信息数组
  21. var_dump($stmt->errorInfo());
把值绑定到参数

fetch()获取结果集中的第一条数据

fetchAll()获取结果集中的全部数据

捕捉错误信息

遍历数据

  1. <?php
  2. $sql = "SELECT * FROM `apple` WHERE `id`>?";
  3. // 准备执行sql语句
  4. $stmt = $pdo->prepare($sql);
  5. // 绑定值到参数中
  6. $stmt->bindValue(1, 4);
  7. // 执行预处理语句
  8. $stmt->execute();
  9. // 使用fetch_all()获取结果集
  10. $a = $stmt->fetchAll(PDO::FETCH_ASSOC);
  11. // 遍历数组
  12. echo <<<TAB
  13. <table border=1 align=center>
  14. <tr>
  15. <td>id</td>
  16. <td>姓名</td>
  17. <td>密码</td>
  18. <td>性别</td>
  19. </tr>
  20. TAB;
  21. foreach ($a as $k => $v) {
  22. echo <<<TA
  23. <tr>
  24. <td>{$v['id']}</td>
  25. <td>{$v['username']}</td>
  26. <td>{$v['password']}</td>
  27. <td>{$v['sex']}</td>
  28. </tr>
  29. TA;
  30. }
  31. echo '</table>';

总结

1.了解了PDO的一些基础操作
2.需要多敲代码形成记忆(做作业时很容易忘记代码的书写)
3.PDO还有很多方法需要自行去了解和尝试

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