在多个查询中应用相同规则的最佳方法是什么?

时间:2014-10-03 16:07:01

标签: php mysql sql

我的应用程序有一个仪表板屏幕,其中有许多图表显示用户活动,销售业绩等的指标和结果。

可以按日期,用户和许多其他选项过滤这些结果。假设我对每个图表都有一个查询,在这些多个查询中应用相同过滤规则的最佳方法是什么?什么是复制相同“where”子句的最佳方法(相同的过滤规则) )经过多次询问?

例如,

  

SELECT * FROM users WHERE date ='2014-10-03';

     

SELECT * FROM products WHERE date ='2014-10-03';

两个查询都有相同的规则。 有人建议使用此规则设置变量,并将其连接到其他查询。类似的东西:

  

$ where =“WHERE date ='2014-10-03'”;

     

$ query =“SELECT * FROM users”。 $其中;

     

...

     

$ query =“SELECT * FROM products”。 $其中;

     

...

但我不认为这是一个很好的实践。

3 个答案:

答案 0 :(得分:0)

如果它类似于我过去的问题,我猜你需要这些受到许多经常重复的WHERE条件的限制。用户,部门许可,时间等

在我的案例中有用的是将这些变为字符串变量,并在生成图表和图形的查询中重复使用它们。当然,不要将用户数据插入动态查询中。希望它有所帮助。

答案 1 :(得分:0)

如果表中的日期不共享相同的列名,那么保持值动态不是一个更好的主意。

$date = '2014-10-03';

$query = "SELECT * FROM users WHERE `date_added` = $date";

$query = "SELECT * FROM products WHERE `date_purchased` = $date";

注意:使用适当的验证和安全性检查来在sql中使用用户输入数据。

答案 2 :(得分:0)

我认为您应该考虑使用预备语句。与Oracle中的绑定变量类似。

查询只需要解析(或准备好)一次,但可以使用相同或不同的参数执行多次

这里有很好的解释:http://docs.php.net/pdo.prepared-statements

防止SQL注入攻击