PHP可以在SQL预处理语句中绑定数字列表吗?

时间:2013-09-26 19:07:49

标签: php coldfusion

我正在将Coldfusion网站转换为PHP。我有一个查询,查看逗号分隔数字列表,看看是否有匹配,然后相应地做出响应。这是我目前使用的where语句。

WHERE (`link_issue_category`.`Category_ID` IN (<CFQUERYPARAM value="#Category_id#" list = "yes">)

如何用PHP编写?

2 个答案:

答案 0 :(得分:0)

CFQUERYPARAM对值进行一些验证,如果可能,设置绑定参数。您可以将该值嵌入到SQL中,假设您已经对其进行了验证/清理。 list参数指定这是逗号分隔的列表。您应该能够将此列表直接插入查询中,具体取决于值类型。

"WHERE (`link_issue_category`.`Category_ID` IN ($category_id)";

如果列表中的值是字符串,则可能需要在进入查询之前将它们包装在qoutes中。

答案 1 :(得分:0)

FYI CF只会创建一个新的预备语句,其中?的数量与场景后面的列表长度相同。

因此,如果你想在PHP中使用相同的行为,那真的不会那么难。只需动态创建一个新的预准备语句,然后相应地绑定它们。

PHP准备好的陈述:http://php.net/manual/en/pdo.prepared-statements.php

但是,您可以使用正则表达式将值列表仅验证为数值和逗号,并将该变量用作SQL语句的一部分。