如何使用内置的crud - model在Codeigniter4上插入和转义数据



我试图理解Codeigniter4的新方法和可能性。

我看到了一个更短的方式,通过构建在crude - model做最简单的工作,用更少的代码。

在我用受保护的变量设置myModel之后,我是否用此代码在控制器中插入新数据?
$this->myModel->insert(['filed1' => 'value1,
'field2'  =>$this->request->getPost('field')...
]));

这很好。

现在我想让它更安全一点,我想只插入转义值

CodeIgniter有很多内置函数/助手。所以我尝试使用"escape()"In this way

$this->myModel->insert(escape(['filed1' => 'value1,
'field2'  =>$this->request->getPost('field')...
])));

但是它失败了,错误是"调用未定义的函数AppControllersescape()">

那么我如何才能只将转义值插入到我的数据库中,以最好/最快的代码/方式可能支持内置的基本Crud函数?

谢谢你在这一点上的教导/帮助我!

escape不能在全局上下文中工作,因为该方法是Database类的成员(或者更确切地说,是实现ConnectionInterface接口的父类)。

esc一个全局函数,这就是为什么它在全局上下文中工作。

然而,esc被设计为逃避进入网页的数据,而不是数据库。

好消息是,如果你正在使用查询生成器方法,则输入已自动转义:

它还允许更安全的查询,因为值被转义了系统自动执行

如果出于某种原因你仍然需要手动转义输入(例如使用基本查询),有几个选项,包括你之前试图使用的escape方法。

我找到了第一种方法"esc()">

$this->myModel->insert(['filed1' => esc('value1'),
'field2'  => esc($this->request->getPost('field'))...
]));

也许有更好的方法或者有人有其他建议?

最新更新