我的MYSQL查询有点麻烦
我有一个充满产品的数据库,并且有一个下拉菜单,用户可以通过该菜单选择一天中的什么时间获取结果:
落下
早餐
午餐
晚间
任何时候
目前,我的发言是
SELECT * from DEALS WHERE timeofday='post data from form';
现在可以正常工作,但是可以选择“ Anytime”(任意),我希望查询能够搜索上述所有/任何结果。
我正在考虑做一个IF语句,它会触发2个单独的查询,其中一个语句说明
$_POST['timeofday'] == 'Anytime'
然后是否触发SELECT * from DEALS where timeofday='Breakfast'
OR timeofday='Lunch' OR timeofday='Evening';
否则,只是执行普通查询,尽管想知道是否有可能仅用一条语句来执行此操作。
亲切的问候
最佳答案
$query = 'SELECT * from DEALS';
if ($_POST['timeofday'] != 'Anytime') {
$query .= ' WHERE timeofday="' . $_POST['timeofday'] . '"';
}
正如DCoder所提到的,这种方法容易受到sql注入的攻击。您应该检查/清理输入或使用准备好的语句。在这种情况下,存在一组预定义的值,您可以:
$knownTimesOfDay = array('Breakfast', 'Lunch', 'Evening', 'Anytime');
if (!in_array($_POST['timeofday'])) {
die('Unsuppotred time of day... Did it really come from the form?');
}
$query = 'SELECT * from DEALS';
if ($_POST['timeofday'] != 'Anytime') {
$query .= ' WHERE timeofday="' . $_POST['timeofday'] . '"';
}