我正在将Coldfusion网站转换为PHP。我有一个查询,查看逗号分隔数字列表,看看是否有匹配,然后相应地做出响应。这是我目前使用的where语句。
WHERE (`link_issue_category`.`Category_ID` IN (<CFQUERYPARAM value="#Category_id#" list = "yes">)
如何用PHP编写?
答案 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语句的一部分。