描述:
预处理语句prepare是pdo提供的一种db操作方式。其语言逻辑与正常的pdo访问相同。但区别于在prepare语句允许用户在【设置sql语句】与【执行sql语句】之间部分进行参数的注入与提取操作,而不是像正常的pdo访问一样直接将参数写死。
(1)prepare()方法和execute()方法
(2)bindValue()方法
(3)bindColumn()方法
正常pdo直接访问:设置sql语句→执行sql语句
预处理访问:设置sql语句→预处理sql语句→处理sql语句中参数→执行sql语句
prepare()方法和execute()方法
prepare()方法为预处理sql语句的方法,能够让pdo预先处理【半成品的】sql语句。并生成一个PDOStatementObject类型的结果。
execute()方法是提供给PDOSO类型对象去执行的【成品】sql语句的方法,并生成一个PDOStatementObject类型的结果。
说明:
交由pdo去prepare预处理的【半成品】sql语句,使用?问号作为占位符,表示待传参的参数。
prepare预处理必须只能处理【半成品】sql语句,如果是完整则需要使用exec方法执行并且会将结果存放到PDOSO对象中。
PDOSO对象在预处理的不同阶段有着不同的含义。
语法:
$sql = “insert info friendslist values(?,?,?)”;
$pdoso = $pdo->prepare( $sql);
echo $pdoso->execute(array(“我是美女”,“female”,99,123456789));
bindColumn()方法
允许将执行结果的一列数据绑定到一个指定对象上,本方法需要在execute()方法执行结束后在执行。
语法: $pdoso->bindColumn(index,指定变量);
说明:
1:第一个参数表示结果中的第几列数据。第一列就写1,以此类推。
2:第二个参数表示数据要赋值给那个变量,随便一个变量即可。
3:bindColumn()方法一次绑定一列给一个变量,如果绑定多个,则执行多次即可。
例子:
$sql = “select * from friendslist”;
$pdoso = $pdo-> prepare( $sql);
$pdoso -> execute();
$pdoso -> bindColumn(1, $friendsName);
$pdoso -> bindColumn(2, $friendsSex);
while( $row = $pdoso->fetch(PDO::FETCH_COLUMN)){
echo “{ $friendsName}”."----"."{ $friendsSex}"."< br/>";
}
bindValue()方法
bindValue()方法是提供给pdo预处理之后得到的PDOSO对象使用的方法,用来给【半成品】的sql语句进行传值。
语法:
$pdoso->bindValue(index,value);
说明:
1:第一个参数表示给sql语句中第几个参数传值,第一个就写1,以此类推。
2:第二个参数表示给sql语句中的对应参数传的具体的值。
3:bindValue一次绑定一个参数,如果有多个需要调用多次。
例子:
$sql = “insert into friendslist values(?,?,?,?)”;
$pdoso = $pdo -> prepare( $sql);
$pdoso-> bindValue(1,‘我是美女’);
$pdoso->bindValue(2,‘female’);
$pdoso->bindValue(3,666);
$pdoso->bindValue(4,1234567);
echo $pdoso->execute();