PDO 预处理

使用预处理语句,可以确保不会发生 SQL 注入的问题。在 PDO 中,可以使用 prepare() 方法来实现预处理语句,返回值是 PDOStatement 实例。

语法格式:

PDOStatement PDO::prepare( String sql )

示例

<?php
header(“content-type:text/html;charset=utf-8”);
$userName=”张三”;
$password=”123456”;
//连接数据库
$url=”mysql:host=127.0.0.1;dbname=cai”;
$user=”root”;
$pwd=”123”;
$conn=newPDO($url,$user,$pwd);
//预处理
$st=$conn->prepare(“select * from user where username=? and password=?”);
$st->bindParam(1,$userName);
$st->bindParam(2,$password);
$st->execute();
//获得结果集
$rs=$st->fetch();
echo”

  1. “;
    var_dump($rs);
    echo
“;


代码讲解

1、指定将要执行的 SQL 语句
$st = $conn->prepare(“select from user where username=? and password=?”);
通过 PDO 的 prepare() 方法,指定将要执行的 SQL 语句,返回值为 PDOStatement 实例。
*问号?:
SQL 语句中的问号,表示占位符,后面将会为其绑定具体的参数值。

2、占位符绑定参数
$st->bindParam(1,$userName);
$st->bindParam(2,$password);
通过 bindParam() 方法,为 SQL 语句中的问号(占位符),绑定具体的参数值。
数字1:表示 SQL 语句中的第 1 个占位符,也就是 username 字段的值。
$userName:将 $userName 变量值,绑定到 SQL 语句中的第 1 个占位符。
数字2:表示 SQL 语句中的第 2 个占位符,也就是 password 字段的值。
$password:将 $password 变量值,绑定到 SQL 语句中的第 2 个占位符。

3、执行预处理语句
$st->execute();
通过 execute() 方法,执行预处理语句。