博主信息
博文 21
粉丝 0
评论 1
访问量 16535
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PDO数据库基本操作和类的使用
手机用户1620888567
原创
742人浏览过

#

读数据库

  1. // 1.连接数据库,php是数据库名字
  2. // var_dump($pdo);检测连接结果
  3. // prepare 预处理sql语句的方法,生成处理对象
  4. // -> 是类的访问符号,访问类里的方法或成员
  5. // execute() 执行sql语句(读/写)
  6. // print_r($data);
  7. <?
  8. try {
  9. $pdo = new PDO('mysql:host=localhost;dbname=song','root','root');
  10. } catch (\Throwable $th) {
  11. echo '数据库连接失败' . $e->getMessage();
  12. }
  13. $pre = $pdo -> prepare('SELECT * FROM `user`');
  14. $exe = $pre -> execute();
  15. $data = $pre -> fetchAll();
  16. ?>
  17. <table width="200" border="1">
  18. <? foreach ($data as $key => $value) {
  19. ?>
  20. <tr>
  21. <td><?= $value['name'] ?></td>
  22. <td><?=$value['add_time']?></td>
  23. <td><?=$value['status']?></td>
  24. </tr>
  25. <? } ?>
  26. </tr>
  27. </table>

读数据库到指点变量

  1. try{
  2. $pdo = new PDO('mysql:host=127.0.0.1;dbname=song','root','root');
  3. }catch(PDOException $e){
  4. // 抛出错误,错误是你可以定义的
  5. echo '数据库连接失败' . $e->getMessage();
  6. }
  7. $pre = $pdo -> prepare('SELECT * FROM `user`');
  8. $exe = $pre -> execute();
  9. // 把mysql读取出来的这一列数据,放到$name变量中
  10. $pre -> bindColumn('name',$name);
  11. $pre -> bindColumn('age',$age);
  12. while ($pre->fetch(PDO::FETCH_ASSOC)){
  13. echo '姓名:' . $name;
  14. echo '年龄:' . $age;
  15. echo '<hr>';
  16. }

insert防止sql注入攻击

第一种写法,占位符 :

  1. <?
  2. $sql = 'INSERT INTO `user` SET `account`=:account, `password`=:password,`name`=:name,`phone`=:phone';
  3. $pre = $pdo -> prepare($sql);
  4. // bindParam 参数绑定
  5. // 1. 站位符名
  6. // 2. 要给值得变量,绑定上,现在可以没值
  7. // 3. 常量,pdo预定义常量,可以设置这个值的类型 ,访问方式: PDO:: ,类里的常量访问方式
  8. $pre -> bindParam ('account',$account, PDO::PARAM_STR);
  9. $pre -> bindParam ('password',$password, PDO::PARAM_STR);
  10. $pre -> bindParam ('name',$name, PDO::PARAM_STR);
  11. $pre -> bindParam ('phone',$phone, PDO::PARAM_INT);
  12. $account = 'xiaobian30';
  13. $password = md5('123456');
  14. $name = '小编30';
  15. $phone = 1384382299;
  16. $exe = $pre -> execute();
  17. if(!$exe){
  18. // 错误信息打印出来
  19. print_r($pre->errorInfo());
  20. }else{
  21. // rowCount 获取是否成功。影响数量
  22. echo '插入数量'.$pre -> rowCount();
  23. echo '<hr>';
  24. // lastInsertId 获取这次自增的ID,类是用连接的类$pdo
  25. echo '最后插入ID'.$pdo -> lastInsertId();
  26. }
  27. ?>

第二种写法 占位符?

  1. <?
  2. $sql = 'INSERT INTO `user` SET `account`=?, `password`=?,`name`=?,`phone`=?';
  3. $pre = $pdo -> prepare($sql);
  4. $pre -> bindParam (1,$account, PDO::PARAM_STR);
  5. $pre -> bindParam (2,$password, PDO::PARAM_STR);
  6. $pre -> bindParam (3,$name, PDO::PARAM_STR);
  7. $pre -> bindParam (4,$phone, PDO::PARAM_STR);
  8. $account = 'xiaobian30';
  9. $password = md5('123456');
  10. $name = '小编30';
  11. $phone = 1384382299;
  12. $exe = $pre -> execute();
  13. if(!$exe){
  14. // 错误信息打印出来
  15. print_r($pre->errorInfo());
  16. }else{
  17. // rowCount 获取是否成功。影响数量
  18. echo '插入数量'.$pre -> rowCount();
  19. echo '<hr>';
  20. // lastInsertId 获取这次自增的ID,类是用连接的类$pdo
  21. echo '最后插入ID'.$pdo -> lastInsertId();
  22. }
  23. ?>

第三种写法

  1. //明文占位,数组传值
  2. $sql = 'INSERT INTO `user` SET `account`=:account, `password`=:password,`name`=:name,`phone`=:phone';
  3. $pre = $pdo -> prepare($sql);
  4. $exe = $pre -> execute([
  5. ':account' => 'xiaobian33',
  6. ':password' => md5(123456),
  7. ':name' => '小编33',
  8. ':phone' => 13843812277
  9. ]);
  10. if(!$exe){
  11. // 错误信息打印出来
  12. print_r($pre->errorInfo());
  13. }else{
  14. // rowCount 获取是否成功。影响数量
  15. echo $pre -> rowCount();
  16. echo '<hr>';
  17. // lastInsertId 获取这次自增的ID,类是用连接的类$pdo
  18. echo $pdo -> lastInsertId();
  19. }
  20. ?>

数据库设置编码

  1. <?
  2. header ('content-type:text/html;charset=utf-8');
  3. //new PDO('mysql:host=127.0.0.1;dbname=php','root','root', array(PDO::MYSQL_ATTR_INIT_COMAND => "SET NAMES 'utf-8'"));
  4. try{
  5. $pdo = new PDO('mysql:host=127.0.0.1;dbname=song','root','root');
  6. }catch(PDOException $e){
  7. // 抛出错误,错误是你可以定义的
  8. echo '数据库连接失败' . $e->getMessage();
  9. }
  10. $pdo->query('SET NAMES utf8');
  11. ?>

数据库关闭PDO

  • 方法一 $pdo = null;
  • 方法二 unset($pdo);

  1. class Teacher{
  2. public $name;
  3. public $age;
  4. // 构造方法(人事部)
  5. public function __construct($n,$age){
  6. // $this 代表 本类(Teacher)
  7. $this->name = $n;
  8. // $this->age ===等于 public $age;
  9. $this->age = $age;
  10. // 它可以访问 本类里的 成员属性和成员方法
  11. $this->jh();
  12. }
  13. public function jh(){
  14. return '我是php中文网的老师';
  15. }
  16. public function code(){
  17. return '我会写代码';
  18. }
  19. // 析构方法(人事部),离职的时候执行的
  20. // 所有代码执行完以后,才执行,可以用做日志记录
  21. public function __destruct(){
  22. echo '我离职了';
  23. }
  24. }
  25. // new 类的时候,就把成员变量的值传进去
  26. $ouyang = new Teacher('欧阳克','38');
  27. echo $ouyang->name;
  28. echo '<hr>';
  29. echo $ouyang->age;
  30. echo '<hr>';
  31. ?>

批改老师: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+教程免费学