我的应用程序有一个仪表板屏幕,它有许多图表,显示用户活动、销售性能等的指标和结果。
这些结果可以通过日期、用户和许多其他选项进行过滤。假设我对每个图表都有一个查询,那么在这些多个查询中应用相同的过滤规则的最好方法是什么呢?,复制相同的"where“子句(相同的过滤规则)的最佳方法是什么?
例如,
从日期=‘2014-10-03’的用户中选择*; 从日期=‘2014-10-03’的产品中选择*;
这两个查询都有相同的规则。一些人建议用这个规则设置一个变量,并将其连接到其他查询中。类似于:
$where =“日期为‘2014-10-03’的地方”; $query =“从用户中选择*”。$where; ..。 $query =“从产品中选择*”。$where; ..。
但我不认为这是一种好的做法。
发布于 2014-10-03 08:20:34
如果它类似于我在过去的问题,我想你需要这些限制,很多,经常重复的条件。用户、部门许可、时间等。
在我的例子中,起作用的是将它们变成字符串变量,并在生成图表的查询中重用它们。当然,不要在动态查询中插入用户数据。希望能帮上忙。
发布于 2014-10-03 11:03:43
如果表没有共享日期的相同列名,那么只保持值的动态难道不是更好的主意吗?
$date = '2014-10-03';
$query = "SELECT * FROM users WHERE `date_added` = $date";
$query = "SELECT * FROM products WHERE `date_purchased` = $date";
注意:在sql中使用用户输入数据时使用适当的验证和安全检查。
发布于 2014-10-03 12:14:02
我认为你应该考虑使用预先准备好的陈述。类似于Oracle中的绑定变量。
查询只需要解析(或准备)一次,但可以使用相同或不同的参数多次执行。
很好的解释:http://docs.php.net/pdo.prepared-statements
也可以防止SQL注入攻击。
https://stackoverflow.com/questions/26182659
复制