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

来源:互联网 发布:12 fan club动作数据 编辑:程序博客网 时间:2024/06/06 12:35
<?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>";?>

原创粉丝点击