我的MYSQL查询有点麻烦
我有一个全是产品的数据库,我有一个下拉菜单,让用户选择他们想要获得结果的时间:-
现在我的声明是
SELECT * from DEALS WHERE timeofday='post data from form';现在这很好,但是有了“任何时候”的选项,我希望这个查询能够搜索所有/任何上面的结果。
我正在考虑做一个IF语句,它会触发两个不同的查询,其中一个查询是如果$_POST['timeofday'] == 'Anytime'启动的话
SELECT * from DEALS where timeofday='Breakfast'
OR timeofday='Lunch' OR timeofday='Evening';否则,只需执行正常的查询,尽管不知道是否可以在一条语句中完成此操作。
亲切的问候
发布于 2012-07-08 11:15:31
$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'] . '"';
}发布于 2012-07-08 11:16:22
别以为一句话就能做到。
无论如何,您将不得不使用if语句。
发布于 2012-07-08 11:16:45
如果这些是仅有的3个可能的时间值,那么在php脚本中可以有一个if,如下所示:
if($_POST['timeofday'] != 'Anytime' )
sql .= "where timeofday='".$_POST['timeofday']."'";https://stackoverflow.com/questions/11382669
复制相似问题