如何在opencart中使用参数化查询/预处理语句?

时间:2017-06-25 08:39:35

标签: php mysql opencart

如何在opencart中使用参数化查询/预准备语句。我在opencart中使用了许多查询,我需要使用参数化结构来防止在opencart中进行sql注入。下面是一个使用的示例插入语句:

$result = $this->db->query("INSERT INTO ".DB_PREFIX."xxxx SET 
pqrs = '".$this->db->escape($data['pqrs'])."',
 opiu = '".(int)$data['opiu']."', ttttt = '".(int)$data['ttttt']."',
 yyyyy = '".$this->db->escape($data['yyyyy'])."', bbbbb = '".$data['bbbbb']."',
 status = 1, ppppp = '".$data['ppppp']."'");

如何将此查询转换为参数查询?

2 个答案:

答案 0 :(得分:1)

It looks like OpenCart在自定义数据库接口中不支持预准备语句。您可以向开发人员发送请求,表明这些方法将被实现,或者您可以自己编写它们。

答案 1 :(得分:1)

mPDO 适配器为准备好的语句预先编写了功能,但是访问它的 DB 对象没有,其余的适配器也没有。如果要访问这些函数,可以将 mPO 类的 $connection$statement 属性以及 DB 类的 $statement 的可访问性从 $adaptor 更改为 {{ 1}} - 或为它们创建 getter 函数。

但是,如果您从 mPDO 切换到 mysqli,依赖于此的代码会崩溃,并且会破坏系统的设计。

总而言之:您可以通过 mPDO 和一些快速更改使用准备好的语句 - 代价是破坏 MySQL 适配器的可交换性 - 或者您似乎必须自己实现整个功能。