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

时间:2013-09-27 00:26:49

标签: php postgresql pdo prepared-statement

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

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

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

最好的情况是缩小记录列表的过滤器表单:如果没有使用过滤器,查询甚至不会使用WHERE,而可能会使用所有过滤器,从而产生大的WHERE查询。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

不要准备您不会执行的查询。

如果WHERE子句中的搜索项有差异,则需要准备不同的SQL字符串。

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

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