Blogger Information
Blog 21
fans 0
comment 1
visits 11003
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO数据库基本操作和类的使用
手机用户1620888567
Original
527 people have browsed it

#

读数据库

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

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:作业的代码尽量手敲,这样容易熟悉代码
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post