博客列表 >PDO数据库基本操作和类的使用

PDO数据库基本操作和类的使用

手机用户1620888567
手机用户1620888567原创
2021年10月20日 16:41:19523浏览

#

读数据库

  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. ?>

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