pdo中的预处理语法

database

什么叫预处理语法

就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译);

该sql语句的“形式”中,含有“未给定的数据项”。

然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方便执行。

比如(有两种预定义语法):

语法1:

$sql = “select * from tab where id = ? “; //这里这个“?”就是未给定的数据项;这里通常叫做“占位符”

//也可以是多个问好。

语法2:

$sql = “select * from tab where id = :v1 and name = :v2 “; //这里这个“:v1”和 “:v2” 就是未给定的数据项;通常这里叫做“命名参数”;

怎么使用?

分3步:

1,对含预处理语法的sql语句进行“预处理”:

$stmt = $pdo->prepare($sql ); //

2, 对上述预处理的结果对象($stmt)的未赋值数据,进行赋值:

$stmt->bindValue( 数据项1, 值1);

$stmt->bindValue( 数据项2, 值2);

。。。。。。

3, 执行执行:

$stmt->execute();

这样之后,该sql语句就算正式完成!

<?php

header("content-type:text/html; charset=utf-8");

//实例化pdo对象

$pdo=newPDO("mysql:host=127.0.0.1;port=3306;dbname=test;","root","888888");

//通过query函数执行sql命令

$pdo->query("set names utf8");

//插入数据

$sql="insert into persons (name,age) values (?, ?);";

$preObj=$pdo->prepare($sql);

$res=$preObj->execute(array("小明",22));

var_dump($res);

//删除数据

$sql="delete from persons where id = ?";

$preObj=$pdo->prepare($sql);

$res=$preObj->execute(array(3));

var_dump($res);

//修改数据

$sql="update persons set name = ? where id = ?;";

$preObj=$pdo->prepare($sql);

$res=$preObj->execute(array("lucy",5));

var_dump($res);

//查询数据

$sql="select * from persons where age > ? order by id desc;";

$preObj=$pdo->prepare($sql);

$preObj->execute(array(20));

$arr=$preObj->fetchAll(PDO::FETCH_ASSOC);

/*

* FETCH_BOTH 是默认的,可省,返回关联和索引。

* FETCH_ASSOC 参数决定返回的只有关联数组。

* PDO::FETCH_NUM 返回索引数组

* PDO::FETCH_OBJ 返回由对象组成的二维数组

*/

print_r($arr);

以上是 pdo中的预处理语法 的全部内容, 来源链接: utcz.com/z/532822.html

回到顶部