- <?php
- /**
- * php data object
- *
- * 预处理(推荐使用)
- *
- * PDOStatement
- * 可以准备一个预处理语句,也可以处理结果集
- * 占位符有两种:
- * ?参数 索引数组,按索引顺序使用
- * 名字参数 关联数组,按名次使用,与顺序无关
- *
- */
- //一:链接
- $dsn = "mysql:host=localhost;dbname=hibernate";
- $username = "root";
- $passwd = "root";
- $options = array(PDO::ATTR_AUTOCOMMIT=>1);
- try {
- $pdo = new PDO($dsn, $username, $passwd, $options);
- }catch (PDOException $e){
- echo "数据库连接失败".$e->getMessage();
- exit;
- }
- //二:预处理
- //准备语句
- //$sql = "select * from users where id = ?";
- $sql = "select * from users where id = :id";
- $stmt = $pdo->prepare($sql);//所有sql都可以执行
- //绑定
- //$stmt->bindParam(1, $id);
- $stmt->bindParam(":id", $id);
- $id = 2;
- if ($stmt->execute()) {
- echo "执行成功"."<br>";
- echo "最后影响的插入id".$pdo->lastInsertId()."<br>";
- }
- //直接在执行的时候插入语句(可用于传值接收)
- $sql = "select * from users where id = :id";
- $stmt = $pdo->prepare($sql);//所有sql都可以执行
- $stmt->execute(array(":id"=>2));
- //直接在执行的时候插入语句(可用于传值接收)
- $sql = "select * from users where id = ?";
- $stmt = $pdo->prepare($sql);//所有sql都可以执行
- $stmt->execute(array(12));
- //获取结果集
- $sql = "select * from users where id < ?";
- $stmt = $pdo->prepare($sql);//所有sql都可以执行
- $stmt->execute(array(12));
- //设置模式的话,就是索引获取都按照这个模式了
- $stmt->setFetchMode(PDO::FETCH_NUM);
- /**
- * 方式一:单行获取
- */
- //索引数组返回
- //$row = $stmt->fetch(PDO::FETCH_NUM);
- //关联数组返回
- //$row = $stmt->fetch(PDO::FETCH_ASSOC);
- //都返回返回
- //$row = $stmt->fetch(PDO::FETCH_BOTH);
- //然后再进行获取
- //$row = $stmt->fetch();
- //print_r($row);
- /**
- * 方式二:全部获取
- */
- $data = $stmt->fetchAll();
- /**
- * 方式三:绑定列
- * 下载执行方法之前
- * 执行 时候后,循环输出时,进行赋值
- */
- $sql = "select * from users where id < :id";
- $stmt = $pdo->prepare($sql);//所有sql都可以执行
- $stmt->bindColumn("id", $id,PDO::PARAM_INT);
- $stmt->bindColumn("name", $name,PDO::PARAM_STR);
- $stmt->bindColumn("price", $price);
- $stmt->execute(array(":id"=>5));
- //输出列名
- for ($i = 0; $i < $stmt->columnCount(); $i++) {
- $field = $stmt->getColumnMeta($i);
- echo $field["name"]."---";
- }
- echo "<br>";
- //输出所有查询数据
- while ($stmt->fetch()){
- echo "$id--$name--$price<br>";
- }
- echo "总行数:".$stmt->rowCount()."<br>";
- echo "总列数:".$stmt->columnCount()."<br>";
- ?>
php学习笔记(二十三)PDO的预处理语句的查询以及结果集的使用
最新推荐文章于 2024-04-19 05:15:00 发布