我的应用程序有一个仪表板屏幕,其中有许多图表显示用户活动,销售业绩等的指标和结果。
可以按日期,用户和许多其他选项过滤这些结果。假设我对每个图表都有一个查询,在这些多个查询中应用相同过滤规则的最佳方法是什么?什么是复制相同“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”。 $其中;
...
但我不认为这是一个很好的实践。
答案 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注入攻击