博主信息
博文 34
粉丝 0
评论 0
访问量 29169
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
常用 的CURD操作
OC的PHP大牛之路
原创
852人浏览过

pdo: 预处理

1. 匿名参数 + 索引数组

  1. namespace pdo_edu;
  2. use PDO;
  3. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  4. // 匿名参数: ?
  5. $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?;';
  6. $stmt = $db->prepare($sql);
  7. // 索引数组
  8. $data = ['陈梦', 1];
  9. // 执行sql
  10. $stmt->execute($data);
  11. // 验证: 打印sql预处理命令
  12. echo '新增成功, id = ' . $db->lastInsertId() . '<br>';

2. 命名参数 + 关联数组

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // 命名参数: ":name"
  6. $sql = 'INSERT `staff` SET `name`= :name,`sex`= :sex;'
  7. $stmt = $db->prepare($sql);
  8. // 关联数组
  9. $data = ['name'=>'孙颖莎', 'sex'=>1];
  10. // 执行sql
  11. $stmt->execute($data);
  12. // 验证: 打印sql预处理命令
  13. echo '新增成功, id = ' . $db->lastInsertId() . '<br>';

3.参数绑定: 引用绑定 bindParam()

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: INSERT
  6. $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?;';
  7. $stmt = $db->prepare($sql);
  8. // 引用绑定: 动态绑定,绑定的不是数据本身,而它的地址/引用/别
  9. $stmt->bindParam(1, $name, PDO::PARAM_STR);
  10. $stmt->bindParam(2, $sex, PDO::PARAM_INT);
  11. list($name, $sex, $email)=['王曼昱', 1];
  12. // 执行sql
  13. $stmt->execute();
  14. echo '新增成功, id = ' . $db->lastInsertId() . '<br>';
  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: INSERT
  6. $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?;';
  7. $stmt = $db->prepare($sql);
  8. // 引用绑定
  9. $stmt->bindParam(1, $name, PDO::PARAM_STR);
  10. $stmt->bindParam(2, $sex, PDO::PARAM_INT);
  11. // 二维数组
  12. $data = [
  13. ['樊振东',0],
  14. ['马龙',0],
  15. ['徐昕',0],
  16. ];
  17. foreach ($data as list($name, $sex)) {
  18. // 执行sql
  19. $stmt->execute();
  20. echo '新增成功, id = ' . $db->lastInsertId() .
  21. '<br>';
  22. }

4.失败检测与处理

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: INSERT
  6. $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?;';
  7. $stmt = $db->prepare($sql);
  8. $data = ['刘翔', 0];
  9. // 执行sql
  10. if ($stmt->execute($data)) {
  11. if ($stmt->rowCount() > 0) {
  12. // success
  13. echo '新增成功, id = ' . $db->lastInsertId() .
  14. '<br>';
  15. } else {
  16. // fail
  17. echo '新增失败';
  18. print_r($stmt->errorInfo());
  19. }
  20. } else {
  21. // false
  22. echo 'sql执行失败';
  23. print_r($stmt->errorInfo());
  24. }

5. 更新操作

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: UPDATE
  6. $sql = <<< SQL
  7. UPDATE `staff`
  8. SET `name`= ?,`sex`= ?,
  9. WHERE `id` = ? ;
  10. SQL;
  11. if (false === stripos($sql, 'where')) {
  12. exit('禁止无条件更新');
  13. }
  14. $stmt = $db->prepare($sql);
  15. $data = ['苏炳添', 0, 10];
  16. // 执行sql
  17. if ($stmt->execute($data)) {
  18. if ($stmt->rowCount() > 0) {
  19. echo '成功的更新了 '.$stmt->rowCount() . '条记录
  20. ~~';
  21. } else {
  22. echo '没有记录被更新';
  23. print_r($stmt->errorInfo());
  24. }
  25. } else {
  26. echo 'sql执行失败';
  27. print_r($stmt->errorInfo());
  28. }

6.删除操作

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: DELETE
  6. $sql = 'DELETE FROM `staff` WHERE `id` = ?;';
  7. if (false === stripos($sql, 'where')) {
  8. exit('禁止无条件删除');
  9. }
  10. $stmt = $db->prepare($sql);
  11. // 执行sql
  12. if ($stmt->execute([9])) {
  13. if ($stmt->rowCount() > 0) {
  14. echo '成功的删除了 '.$stmt->rowCount() . ' 条记录
  15. ~~';
  16. } else {
  17. echo '没有记录被删除';
  18. print_r($stmt->errorInfo());
  19. }
  20. } else {
  21. echo 'sql执行失败';
  22. print_r($stmt->errorInfo());
  23. // $stmt->debugDumpParams();
  24. }

7.查询-1: fetch() + while()

  1. namespace pdo_edu;
  2. use PDO;
  3. // 连接
  4. $db = new PDO('mysql:dbname=phpedu', 'root', 'root');
  5. // CURD: SELECT
  6. $sql = 'SELECT `id`,`name` FROM `staff`LIMIT ?';
  7. $stmt = $db->prepare($sql);
  8. $stmt->bindValue(1, 3, PDO::PARAM_INT);
  9. // 执行sql
  10. if ($stmt->execute()) {
  11. while ($staff = $stmt->fetch(PDO::FETCH_ASSOC))
  12. {
  13. printf('<pre>%s</pre>', print_r($staff, true));
  14. }
  15. } else {
  16. echo 'sql执行失败';
  17. print_r($stmt->errorInfo());
  18. }
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学