1

我正在使用 Oracle 数据库和 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'];

Sanitize::clean在 CakePHP 2.3 上是否可以在没有任何配置数据库的情况下以某种方式使用?

谢谢

4

1 回答 1

1

函数 Sanitize::clean() 需要 2 个参数,默认情况下,当您不提供第二个参数时,CakePHP 使用其默认值并尝试使用“默认”连接连接到数据库。快速浏览一下库中的 Sanitize Class 后,似乎是需要数据库连接的“转义”选项。默认情况下调用它以使字符串 SQL 安全。

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

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

查看 CookBook 以获取有关 Sanitize 类的更多信息。

于 2013-05-03T12:48:16.607 回答