PHP MYSQL 语法

标签 php mysql select drop-down-menu

我的 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/

相关文章:

php - 构建消息系统的最佳方法是什么

php - 使用 php 和 SQL 获取总和是日期相同

php - 检测 apc 中的错误

javascript - 如何使用 jQuery 显示/隐藏复选框选中/未选中状态的元素

php - 使用 Instaparse 使用 BNF 解析序列化的 PHP 数据

mysql - 如何根据特定列值仅选择最后一个条目,保持当前表顺序

php - 两个时间戳相加

mysql - 这两个 mysql 查询有什么不同?一个使用左连接

SQL数据库选择命令

sql - ORACLE SQL 获取从 2 个选择语句中检索的两个值的差异