首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MYSQL语法

PHP MYSQL语法
EN

Stack Overflow用户
提问于 2012-07-08 11:12:03
回答 4查看 84关注 0票数 0

我的MYSQL查询有点麻烦

我有一个全是产品的数据库,我有一个下拉菜单,让用户选择他们想要获得结果的时间:-

  • 下拉
    • 早餐
    • 午饭
    • 晚上
    • 任何时间

现在我的声明是

代码语言:javascript
复制
SELECT * from DEALS WHERE timeofday='post data from form';

现在这很好,但是有了“任何时候”的选项,我希望这个查询能够搜索所有/任何上面的结果。

我正在考虑做一个IF语句,它会触发两个不同的查询,其中一个查询是如果$_POST['timeofday'] == 'Anytime'启动的话

代码语言:javascript
复制
SELECT * from DEALS where timeofday='Breakfast' 
OR timeofday='Lunch' OR timeofday='Evening';

否则,只需执行正常的查询,尽管不知道是否可以在一条语句中完成此操作。

亲切的问候

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-08 11:15:31

代码语言:javascript
复制
$query = 'SELECT * from DEALS';
if ($_POST['timeofday'] != 'Anytime') {
    $query .= ' WHERE timeofday="' . $_POST['timeofday'] . '"';
}

正如DCoder所提到的,这种方法容易受到sql注入的影响.您应该检查/净化输入或使用准备好的语句。在这种情况下,有一组预定义的值,您可以:

代码语言:javascript
复制
$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'] . '"';
}
票数 3
EN

Stack Overflow用户

发布于 2012-07-08 11:16:22

别以为一句话就能做到。

无论如何,您将不得不使用if语句。

票数 0
EN

Stack Overflow用户

发布于 2012-07-08 11:16:45

如果这些是仅有的3个可能的时间值,那么在php脚本中可以有一个if,如下所示:

代码语言:javascript
复制
if($_POST['timeofday'] != 'Anytime' )
    sql .= "where timeofday='".$_POST['timeofday']."'";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11382669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档