博客列表 >使用pdo类的对象去连接数据库,预处理方法查询数据(二维数组)遍历表格中

使用pdo类的对象去连接数据库,预处理方法查询数据(二维数组)遍历表格中

简行
简行原创
2020年07月17日 15:14:59666浏览

1.设置数据库配置文件及连接:config.php

  1. <?php
  2. //主机地址
  3. define("DB_HOST","localhost");
  4. //数据库用户名
  5. define("DB_USER","root");
  6. //数据库密码
  7. define("DB_PASSWORD","root123");
  8. // 数据库型号
  9. define("DB_TYPE","mysql");
  10. // 数据库名称
  11. define("DB_NAME","my_user");
  12. //数据库编码
  13. define('DB_CHARSET', 'utf8');
  14. //数据库端口号
  15. define('DB_PORT', '3306');
  16. //定义PDO的DSN,数据源名,包括主机名,端口号和数据库名称。
  17. define('DSN', DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);
  18. try{
  19. //连接数据款
  20. $pdo = new PDO(DSN,DB_USER,DB_PASSWORD);
  21. } catch(PDOException $e){
  22. //捕捉特定于数据库信息的PDOEXCEPTION 异常
  23. echo $e->getMessage();
  24. } catch(Throwable $e){
  25. //捕捉拥有Throwable接口的错误或者其他异常
  26. echo $e->getMessage();
  27. }

2.查询遍历:index.php

  1. <?php
  2. //引用文件
  3. require "config.php";
  4. //插入
  5. // $sql1 = "INSERT INTO mu_user (`username`,`password`,`phone`) VALUES('营业员','654321',1865243422)";
  6. // // exec()执行一条 UPDATE,DELETE,INSERT SQL 语句,并返回受影响的行数
  7. // $pdo ->exec($sql1);
  8. // // lastInsertId:返回最后插入行的ID或序列值
  9. // $res_num= $pdo ->lastInsertId();
  10. // if($res_num){
  11. // echo $res_num;
  12. // }else{
  13. // // errorCode() — 获取跟数据库句柄上一次操作相关的 SQLSTATE码;
  14. // echo $pdo->errorCode();
  15. // }
  16. //修改
  17. // $resnum = $res_num-1;
  18. // $uname = '营业员'.$resnum;
  19. // $sql2 = "UPDATE mu_user SET username='".$uname."' WHERE id=".$resnum;
  20. // $res= $pdo ->exec($sql2);
  21. // if($res){
  22. // echo $res;
  23. // }else{
  24. // // errorCode() — 获取跟数据库句柄上一次操作相关的 SQLSTATE码;
  25. // echo $pdo->errorCode();
  26. // }
  27. $sql = "SELECT * FROM mu_user WHERE `username`=:username";
  28. // prepare() — 准备要执行的语句,并返回PDOStatement语句对象
  29. $stemt = $pdo ->prepare($sql);
  30. $username="营业员";
  31. // bindParam — 绑定一个参数到指定的变量名
  32. $stemt->bindParam(":username",$username);
  33. // execute:执行一条预处理语句
  34. $stemt ->execute();
  35. // fetchAll — 返回一个包含结果集中所有行的数组
  36. $result = $stemt->fetchAll(PDO::FETCH_ASSOC);
  37. $res_num = $stemt->rowCount();
  38. ?>
  39. <!DOCTYPE html>
  40. <html lang="en">
  41. <head>
  42. <meta charset="UTF-8">
  43. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  44. <title>Document</title>
  45. </head>
  46. <style>
  47. table{
  48. text-align: center;
  49. border: 1px solid #000;
  50. }
  51. td{
  52. font-size: 1.5rem;
  53. margin:5px;
  54. border: 1px solid #000;
  55. padding: 5px;
  56. }
  57. </style>
  58. <body>
  59. <table >
  60. <tr>
  61. <td>序号</td>
  62. <td>姓名</td>
  63. <td>电话</td>
  64. </tr>
  65. <?php foreach($result as $val){?>
  66. <tr>
  67. <td><?php echo $val['id']?></td>
  68. <td><?php echo $val['username']?></td>
  69. <td><?php echo $val['phone']?></td>
  70. </tr>
  71. <?php }?>
  72. <tr >
  73. <td colspan="3" ><?php echo '总计:'.$res_num."条";?></td>
  74. </tr>
  75. </table>
  76. </body>
  77. </html>

3.效果图

总结
1.不清楚用预处理插入和修改数据可不可行,尝试使用过,但没成功;如果可行的话,后面再测试;
2.不清楚为什么使用limit 预处理查询处理的数据都是空;

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
灭绝师太2020-07-17 17:03:131楼
$pdo->lastInsertId():返回最后插入行的ID或序列值,你就不能把它放到if条件中当成bool类型去判断了,应该if($pdo->lastInsertId() != 0){echo $pdo->lastInsertId()}; 1. 预处理语句可以正常做数据表数据的增删查改 2. LIMIT语句语法去好好看看,注意你使用的MYSQL的版本。