【发布时间】:2013-04-01 07:23:42
【问题描述】:
我有一个巨大的 SELECT,我需要在其中创建一些条件。
例如:
SELECT `t`.`title`, `t`.`price_paid`, `t`.`date_creation`, `t`.`date_upload`
FROM `table_name` AS `t`
WHERE `t`.`date_creation` >= "'.$year.'-'.$month.'-01"
AND `t`.`date_creation` < "'.$year.'-'.($month+1).'-01"
我在 PHP 中声明了 $year 和 $month 的值,我希望在 MYSQL 中生成其余的值(如果需要,我有充分的理由可以详细说明)
如果 date_upload 与 t.date_creation 的间隔不同,我需要将 date_upload 设为空(null 或 0)和 price 也为空
【问题讨论】:
-
能否在 PHP 中动态创建 SQL 语句并将变量传递给您的查询对象?
-
让我们为您的查询使用参数“?” (这是 SQL 语法,而不是 PHP)。 PHP 端只需使用 bindValue() 添加预先计算的参数值。要使它们为空,您不能使用 WHERE 而是使用 CASE 语句(如果不满足条件,则仅使用 THEN NULL)
-
@Matt Busche 当然可以,有什么想法吗?这个/实际查询的结果是一个巨大的数组,我用它来构建一个 CSV 报告。我正在使用一些已经制作的库来插入查询和结构
-
@tadman 感谢您的提示,我仍然很安全,因为一切都在一个框架内,并且在我们的数据中注入东西并不容易,因为这种类型的东西有一些层: )
标签: php mysql select conditional-statements