【问题标题】:How to use parameterized queries/prepared statements in opencart?如何在 opencart 中使用参数化查询/准备语句?
【发布时间】:2017-11-28 09:44:05
【问题描述】:

如何在 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']."'");

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

【问题讨论】:

  • 单行最长的代码,兄弟,为什么不把它变成可读的,这样我们可以帮助你。
  • 我已经编辑了,伙计!

标签: php mysql opencart


【解决方案1】:

It looks like OpenCart 在其自定义 DB 接口中不支持预准备语句。您可以向开发人员发送请求,要求实现这些方法,也可以自己编写。

【讨论】:

  • 我正在尝试写作,但不知道如何去做,我对 Opencart 很陌生。
  • @AbhishekDhanrajShahdeo 然后向开发人员发送请求,要求他们为准备好的语句提供方法。
【解决方案2】:

mPDO 适配器为预处理语句提供了预先编写的功能,但访问它的 DB 对象没有,其余的适配器也没有。如果您想访问这些函数,您可以将 mPO 类的 $connection$statement 属性以及 DB 类的 $adaptorprivate 更改为 public 的可访问性 - 或为它们创建 getter 函数.

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2017-04-17
    • 2014-06-16
    • 1970-01-01
    • 2010-10-19
    相关资源
    最近更新 更多