Codeigniter DB类与预处理语句

时间:2013-04-21 04:32:37

标签: php mysql codeigniter pdo mysqli

您好我想知道使用Codeigniters活动记录类是否等同于在安全问题方面使用预准备语句?

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

?>

VS

 $data = array(
   'title' => 'My title' ,
   'name' => 'My Name' ,
   'date' => 'My date'
);

$this->db->insert('mytable', $data); 

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')

2 个答案:

答案 0 :(得分:5)

CI不支持预准备语句,但它确实支持Query Bindings。查询绑定和预准备语句都会阻止sql注入。但我更喜欢AR因为易用性。它还使查询更具可读性。

您可以查看此link了解详情。

并检查来自此link

的CI查询绑定

答案 1 :(得分:0)

直接回答这个问题。是

两个语句都被转义,从注入攻击中提供安全性。 CodeIgniter db insert方法为你做了转义,一个php预处理语句包含了本质上的转义。

在php预备语句中查看此link信息。

否则就速度,运行方式等而言,这两个陈述并不相同。

侯赛因已经完成了其余的工作。