自定义 PHP 准备语句中的 where 子句


Custom where clauses in PHP prepared statement

我正在阅读有关PDO和准备好的声明,重点是Postgres。

正如我了解 ps 如何在 PHP 中实现的那样,我可以注册一个命名查询,然后为其定义变量并多次运行它。但是,当 where 子句的使用依赖于参数时会发生什么。

例如,如果!empty($param3),那么我添加一个 where 子句,但如果它为空,则该子句将不会在查询中使用。

最好的情况是使用过滤器表单来缩小记录列表的范围:如果未使用过滤器,则查询甚至不会使用 WHERE,而可能会使用所有过滤器,从而导致大的 WHERE 查询。

正如我现在看到的,我需要为每种情况注册 1 个准备好的语句,但这会导致许多语句需要单独维护和测试。

如果要

使用预准备语句,请为每种情况注册 1 个预准备语句。

不要准备不打算执行的查询。

确实,如果 WHERE 子句中的搜索词存在差异,则需要准备不同的 SQL 字符串。

预准备查询仅允许您使用参数代替文本值;也就是说,您通常会放置带引号的字符串或日期或数字文本。 但参数不能用于其他语法,如表名、列名、SQL 表达式、SQL 关键字等。

因此,您必须在准备之前创建 SQL 字符串,具体取决于应用程序条件,例如 !empty($param3) .