在CakePHP 2.3上使用Sanitize :: clean而不连接数据库

时间:2013-05-02 09:25:30

标签: cakephp cakephp-2.0 cakephp-2.3

我正在研究Oracle DataBase和CakePHP 2.3。 由于CakePHP不支持Oracle(没有驱动程序),我在我的模型中使用Oracle程序或php OCI8函数。

因此,我正在使用CakePHP,在CakePHP框架的眼中没有任何有效的数据库链接。

我正在尝试使用Sanitize::clean方法在将注释保存到数据库之前清除注释,并且我遇到了麻烦,因为它似乎在数据库中查找其任务。

这是结果错误:

  

数据库连接“Mysql”丢失或无法创建。

这就是我尝试消毒的方法:

$comment = Sanitize::clean($this->request->data['comment']);

如果我这样做,它的效果非常好:

$comment = $this->request->data['comment'];

在CakePHP 2.3中没有任何已配置的数据库,是否有可能以某种方式使用Sanitize::clean

由于

1 个答案:

答案 0 :(得分:1)

函数Sanitize :: clean()需要2个参数,默认情况下,当您没有给出第二个参数时,CakePHP使用其默认值并尝试使用“默认”连接连接到DB。快速浏览一下库中的Sanitize类后,看起来它是需要数据库连接的'escape'选项。默认情况下调用它使字符串SQL安全。

因此,在您的情况下,由于您不需要SQL连接,因此该请求应该可以解决问题:

$comment = Sanitize::clean($this->request->data['comment'], array('escape' => false);

Check the CookBook for more information on the Sanitize class.