<?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的预处理语句的查询以及结果集的使用
最新推荐文章于 2021-04-05 10:51:57 发布