我试图理解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'))...
]));
也许有更好的方法或者有人有其他建议?