php - 将 2 个下拉列表的值合并到 1 个 MySQL 查询中

标签 php html mysql

我有下面的代码,我想用它在 MySQL 查询中组合下拉列表的月份日期值,这样我就可以按日期过滤。

<form action="" method="post">
<label class="custom-select">
<select name="q">
<option value="">Selecione o Mês:</option>
<option value="MONTH(post_date) = 1''">Jan</option>
<option value="MONTH(post_date) = 2''">Feb</option>
<option value="MONTH(post_date) = 3''">Mar</option>
<option value="MONTH(post_date) = 4''">Apr</option>
<option value="MONTH(post_date) = 5''">May</option>
<option value="MONTH(post_date) = 6''">Jun</option>
<option value="MONTH(post_date) = 7''">Jul</option>
<option value="MONTH(post_date) = 8''">Aug</option>
<option value="MONTH(post_date) = 9''">Sep</option>
<option value="MONTH(post_date) = 10''">Oct</option>
<option value="MONTH(post_date) = 11''">Nov</option>
<option value="MONTH(post_date) = 12''">Dez</option>
</select>
</label>
<label class="custom-select">
<select name="q">
<option value="">Selecione o Ano:</option>
<option value="AND YEAR(post_date) = 2013">2013</option>
<option value="AND YEAR(post_date) = 2014">2014</option>
<option value="AND YEAR(post_date) = 2015">2015</option>
</select>
</label>
<input name="submit2" id="submit2" style="margin-left: 15px;" type="submit" value="Pesquisar">
</form>

<?php 
if ($_POST['q'] == '') {
    $q = 'YEAR(post_date) = YEAR(CURDATE())';
}
else {
    $q = $_POST['q'] ;
}

$query=mysql_query("SELECT *, 'Yield'
FROM wp_posts
WHERE p.post_status = 'publish' AND ".$q." 
LIMIT 0, 2500")
?>

这不起作用,我收到错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'AND YEAR(post_date) = 2014 附近使用的正确语法

有人可以帮忙吗?谢谢

最佳答案

这是一个非常糟糕的解决问题的方法。除此之外,您依赖于字段值以正确的顺序返回,但不能保证这一点。通过 SQL 注入(inject)攻击这个问题也很简单。

但是回答你的问题:MONTH()子句后面的''可能会把事情搞砸。您的查询可能会显示为

SELECT *, 'Yield'
FROM wp_posts
WHERE p.post_status = 'publish' AND MONTH(post_date) = 6''AND YEAR(post_date) = 2014

但是没有简单的方法可以解决这个问题而不会使糟糕的代码变得更糟。

关于php - 将 2 个下拉列表的值合并到 1 个 MySQL 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21892455/

相关文章:

php - 如何制作 Freeswitch ESL phpmod?

javascript - 我如何查看我的所有 Div 是否都有类(class)?

mysql - 如何在子查询中使用主查询的值

php - 同时在DB中保存3张图像

php - Cookie 在 PHP 中不起作用,但在 Javascript 中起作用

php - 在 iFrame 上打开链接 - PHP 或 JQuery

php - MySQL 就像在一行上一样,就像在多行 INNER JOINED 表上一样

php - 如何安全地允许嵌入内容?

jquery - 放大/缩小时如何保持图像和按钮之间的比例

mysql - Joomla中的字体问题