PHP实战PHP经验分享

PHP中MySQL的预处理(预编译)执行方式

2017-04-17  本文已影响0人  kangyiii

MySQL的预编译是指在创建数据库对象时就将指定的SQL语句编译完成,这时SQL语句已经被MySQL解析、审查,所以相对传统的执行方式(每处理一个SQL语句就要解析SQL语句、检查语法和语义),预编译方式在执行数据插入、更新或者删除操作的时候,执行效率更高。

预编译语句优点:

  1. 提高运行效率
  2. 防止SQL注入:因为预编译时预先已经将SQL的结构确定,在执行SQL语句时,结构不会发生改变。

PHP中MySQL的预编译具体操作方式

  1. 编译统一的结构
/*假定已经完成数据库初始化操作,数据库对象名:$pdo*/
$sql = "insert into team values (null, :team_name)";
$PDOStatement = $pdo->prepare($sql);
  1. 绑定数据到中间编译结果
$PDOStatement->bindValue(':team_name','国安');
  1. 执行
$result = $PDOStatement->execute();

完整操作代码

$username = 'root';
$password = '1234abcd';
$driver_options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND    => 'SET NAMES UTF8',
    );
$pdo = new PDO($dsn, $username, $password, $driver_options);
//1.编译统一的结构
$sql = "insert into team values (null, :team_name)";
$stmt = $pdo->prepare($sql);
$data_list = array(
    array('name'=>'国安'),
    array('name'=>'绿地'),
    array('name'=>'恒大'),
    array('name'=>'建业'),
    array('name'=>'鲁能'),
    array('name'=>'申花'),
    );
foreach($data_list as $row) {
    //2.绑定数据到中间编译结果
    $stmt->bindValue(':team_name', $row['name']);

    //3.执行
    $result = $stmt->execute();
    var_dump($result);
}
上一篇 下一篇

猜你喜欢

热点阅读