如何使用 CRUD 模型中的构建在 Codeigniter 4 上插入和转义数据

How to use the build in CRUD-Modell for insert and escape the datas on Codeigniter4

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

我看到 Crud-Model 中构建的一种更短的方法,可以用更少的代码完成最简单的工作。

在使用受保护变量设置 myModel 后,我是否使用此代码在控制器中插入新数据?

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

这样就可以了。

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

为此,CodeIgniter 有很多内置的 functions/helpers。所以我尝试以这种方式使用“escape()”

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

但失败并出现错误“调用未定义的函数 App\Controllers\escape()”

那么我如何使用内置基本 Crud 函数支持的 nicest/fastest code/Way 可能只将转义值插入我的数据库?

在这一点上感谢teach/help我!

我用“esc()”找到了第一种方法

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

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

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

esc 一个全局函数,这就是它在全局上下文中工作的原因。

但是,esc 旨在转义 into web pages 中的数据,而不是数据库。

好消息是,如果您正在使用 Query Builder 方法,那么输入已经为您转义 automatically:

It also allows for safer queries, since the values are escaped automatically by the system.

如果出于某种原因您仍然需要手动转义输入(例如使用基本查询),可以使用 few options,包括您之前尝试使用的 escape 方法。