与 CodeIgniter 4 Query Builder 类方法和函数一样强大和有用,有时您需要手工输入自己的查询。也许它们很复杂。或者,您宁愿编写原始 SQL。了解如何安全地使用您需要的输入 —— 通常作为 WHERE 子句条件的一部分 —— 使用 MySQL 中的示例使用 2 种不同的参数绑定变体。
查询生成器 where() 函数
相关:阅读我在 CodeIgniter 4 Query Builder where() 函数上编写的详细指南,了解有关可用的各种参数结构的更多信息。
对于这篇博文中的示例,我将登录并展示这些发往服务器的查询,通过使用 $db->getLastQuery() 方法。在这篇文章中阅读并了解更多关于 $db->getLastQuery()。
位置参数绑定
位置参数绑定 (?) 在 SQL 标准中定义,并且 CodeIgniter 4 也支持。
在第一个示例中,我使用 where 子句条件过滤器,name = ?,并在 $db->query()方法提供过滤值,通过数组2个元素:

在下面我们从 $db->getLastQuery() 看到发送到服务器,并被记录的查询:

命名绑定
您不仅可以使用位置参数绑定,还可以在查询中使用命名占位符绑定。
只需用冒号包围命名绑定,并在 $db->query() 方法使用关联数组作为第二个参数:

同样,我们从 $db->getLastQuery() 看到发送到服务器并被记录的的确切查询:

IN() 的位置参数绑定
如果您需要使用在()任何查询中的运算符,位置参数绑定也可以用于此。
放置’?’ 之 IN 关键字之后(不带任何括号 - 它们将自动包含在内),为了 $db->query() ,在数组的第二个参数中包含一个值数组 :

请注意,查询具有带有值的 IN() 运算符。

尽管本文中的示例查询非常简单,但您现在已经了解了如何在 CodeIgniter 4 中使用参数绑定和询问()在这些情况下,您有更复杂的查询需求。
原文标题:CodeIgniter 4 Query Parameter Binding with examples in MySQL
原文作者:Joshua Otwell
原文地址:https://joshuaotwell.com/codeigniter-4-query-parameter-binding-with-examples-in-mysql/




