我的 MYSQL 查询遇到了一些问题
我有一个充满产品的数据库,并且有一个下拉菜单,用户可以选择他们想要在一天中的什么时间获取结果:-
- 下拉菜单
- 早餐
- 午餐
- 晚上
- 随时
目前我的声明是
SELECT * from DEALS WHERE timeofday='post data from form';
现在效果很好,但通过“随时”选项,我希望查询能够搜索上述所有/任何内容的结果。
我正在考虑也许做一个 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 注入(inject)的攻击...您应该检查/清理输入或使用准备好的语句。在这种情况下,如果有一组预定义的值,您可以:
$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'] . '"';
}
关于PHP MYSQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11382669/