PDO预处理

PDO预处理
PDOStatement类:准备语句,处理结果集
也就是预处理,安全,高效,推荐使用

两种占位符号:?参数         索引数组,按索引顺序使用
             名子参数      关联数组,按名称使用,和顺序无关,以冒号开头,自己定义

$stmt=$pdo->prepare($sql);     $sql可是是任意sql语句,这与mysqli不同

两种点位符号

<?php
try{
$pdo=new PDO("mysql:host=localhost;dbname=mysqldb","root","snail");
}catch(PDOException $e){
echo $e->getMessage();
}

//准备一条语句,并放到服务器端,而且编译
$stmt=$pdo->prepare("insert into shop(name,price)values(?,?)");
// $stmt=$pdo->prepare("insert into shop(name,price)values(:na,:pr)");

//绑定参数(变量和参数绑定)
$stmt->bindparam(1,$name);
$stmt->bindparam(2,$price);

// $stmt->bindparam(":na",$name);
// $stmt->bindparam(":pr",$price);

$name="liwu11";
$price=234.4311;

if($stmt->execute()){
echo "执行成功";
echo "最后插入的ID:".$pdo->lastInsertId();
}else{
echo "执行失败";
}
?>

<?php
//以数组方式向服务器传值

try{
$pdo=new PDO("mysql:host=localhost;dbname=mysqldb","root","snail");
}catch(PDOException $e){
echo $e->getMessage();
}

$stmt=$pdo->prepare("select * from shop where id >:id");

$stmt->execute(array(':id'=>130));

$row=$stmt->fetch();
print_r($row);
echo '
';
?>

<?php

//用fetch(),fetchAll()来获取查询结果
try{
$pdo=new PDO("mysql:host=localhost;dbname=mysqldb","root","snail");
}catch(PDOException $e){
echo $e->getMessage();
}

$stmt=$pdo->prepare("select * from shop where id >:id");

$stmt->execute(array(':id'=>130));

/* 单条获取fetch()
$stmt->setFetchMode(PDO::FETCH_ASSOC); //设置获取模式
while($row=$stmt->fetch()){
print_r($row);
echo '
';
}
*/

//多条获取fetchAll()
// $stmt->setFetchMode(PDO::FETCH_ASSOC);
$data=$stmt->fetchAll(PDO::FETCH_ASSOC); //也可以用上句进行设置
echo '<pre>';
print_r($data);
echo '</pre>';
?>

<?php
//以表格输出查询结果

try{
$pdo=new PDO("mysql:host=localhost;dbname=mysqldb","root","snail");
}catch(PDOException $e){
echo $e->getMessage();
}

$stmt=$pdo->prepare("select id,name,price from shop where id >:id");

$stmt->execute(array(':id'=>130));

$stmt->bindColumn(id,$id);
$stmt->bindColumn(name,$name);
$stmt->bindColumn(price,$price);

echo '<table border=1 align="center" width=800px>';
echo '<tr>';
for($i=0;$i<$stmt->columncount();$i++){
$field=$stmt->getColumnMeta($i);
echo '<th>'.$field["name"].'</th>';
}
echo "</tr>";

while($stmt->fetch()){
echo '<tr>';
echo '<td>'.$id.'</td>';
echo '<td>'.$name.'</td>';
echo '<td>'.$price.'</td>';
echo '</tr>';
}

echo '</table>';

echo "行:".$stmt->rowcount()."
";
echo "列:".$stmt->columncount()."
";

?>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是sql注入攻击。Sql注入攻击是指创建一个在语法上无效的查询,从而在得出出错消息中呈现关于脚本或数据库的某些...
    snoweek阅读 4,262评论 1 5
  • @(PDO(PHP data object/PHP数据对象))[PDO|预处理语句|参数化查询] PDO Tuto...
    咚门阅读 12,932评论 0 0
  • pdo类PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,...
    桖辶殇阅读 4,385评论 0 0
  • pdo基本使用 【PDO是啥】 PDO是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都...
    桖辶殇阅读 5,167评论 0 4
  • 什么是SQLite?数据库存储数据的步骤 ●SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备...
    飞行的猫阅读 7,276评论 1 7