php学习笔记(二十三)PDO的预处理语句的查询以及结果集的使用

  1. <?php   
  2. /** 
  3.  * php data object 
  4.  *  
  5.  * 预处理(推荐使用) 
  6.  *  
  7.  * PDOStatement 
  8.  * 可以准备一个预处理语句,也可以处理结果集 
  9.  * 占位符有两种: 
  10.  *      ?参数     索引数组,按索引顺序使用 
  11.  *      名字参数        关联数组,按名次使用,与顺序无关 
  12.  *  
  13.  */  
  14. //一:链接  
  15. $dsn = "mysql:host=localhost;dbname=hibernate";  
  16. $username = "root";  
  17. $passwd = "root";  
  18. $options = array(PDO::ATTR_AUTOCOMMIT=>1);  
  19. try {  
  20.     $pdo = new PDO($dsn$username$passwd$options);  
  21. }catch (PDOException $e){  
  22.     echo "数据库连接失败".$e->getMessage();  
  23.     exit;  
  24. }  
  25.   
  26. //二:预处理  
  27. //准备语句  
  28. //$sql = "select * from users where id = ?";  
  29. $sql = "select * from users where id = :id";  
  30. $stmt = $pdo->prepare($sql);//所有sql都可以执行  
  31. //绑定  
  32. //$stmt->bindParam(1, $id);  
  33. $stmt->bindParam(":id"$id);  
  34. $id = 2;  
  35. if ($stmt->execute()) {  
  36.     echo "执行成功"."<br>";  
  37.     echo "最后影响的插入id".$pdo->lastInsertId()."<br>";  
  38. }  
  39.   
  40. //直接在执行的时候插入语句(可用于传值接收)  
  41. $sql = "select * from users where id = :id";  
  42. $stmt = $pdo->prepare($sql);//所有sql都可以执行  
  43. $stmt->execute(array(":id"=>2));  
  44.   
  45. //直接在执行的时候插入语句(可用于传值接收)  
  46. $sql = "select * from users where id = ?";  
  47. $stmt = $pdo->prepare($sql);//所有sql都可以执行  
  48. $stmt->execute(array(12));  
  49.   
  50. //获取结果集  
  51. $sql = "select * from users where id < ?";  
  52. $stmt = $pdo->prepare($sql);//所有sql都可以执行  
  53. $stmt->execute(array(12));  
  54. //设置模式的话,就是索引获取都按照这个模式了  
  55. $stmt->setFetchMode(PDO::FETCH_NUM);  
  56. /** 
  57.  * 方式一:单行获取 
  58.  */  
  59. //索引数组返回  
  60. //$row = $stmt->fetch(PDO::FETCH_NUM);  
  61. //关联数组返回  
  62. //$row = $stmt->fetch(PDO::FETCH_ASSOC);  
  63. //都返回返回  
  64. //$row = $stmt->fetch(PDO::FETCH_BOTH);  
  65. //然后再进行获取  
  66. //$row = $stmt->fetch();  
  67. //print_r($row);  
  68. /** 
  69.  * 方式二:全部获取 
  70.  */  
  71. $data = $stmt->fetchAll();  
  72.   
  73. /** 
  74.  * 方式三:绑定列 
  75.  * 下载执行方法之前 
  76.  * 执行 时候后,循环输出时,进行赋值 
  77.  */  
  78. $sql = "select * from users where id < :id";  
  79. $stmt = $pdo->prepare($sql);//所有sql都可以执行  
  80. $stmt->bindColumn("id"$id,PDO::PARAM_INT);  
  81. $stmt->bindColumn("name"$name,PDO::PARAM_STR);  
  82. $stmt->bindColumn("price"$price);  
  83. $stmt->execute(array(":id"=>5));  
  84. //输出列名  
  85. for ($i = 0; $i < $stmt->columnCount(); $i++) {  
  86.     $field = $stmt->getColumnMeta($i);  
  87.     echo $field["name"]."---";  
  88. }  
  89. echo "<br>";  
  90. //输出所有查询数据  
  91. while ($stmt->fetch()){  
  92.     echo "$id--$name--$price<br>";  
  93. }  
  94. echo "总行数:".$stmt->rowCount()."<br>";  
  95. echo "总列数:".$stmt->columnCount()."<br>";  
  96.   
  97.   
  98. ?>  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值