简体   繁体   English

在1个MySQL查询中合并2个下拉列表的值

[英]Combine the values of 2 drop-down list in 1 MySQL query

I have the code below, which I want to use to combine the month and date values of the drop-down list, in a MySQL query, so I can filter by date. 我有下面的代码,我想用它在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")
?>

This is not working, I get the error: You have an error in your SQL syntax; 这行不通,我收到错误消息:SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND YEAR(post_date) = 2014 检查与您的MySQL服务器版本相对应的手册,以在'AND YEAR(post_date)= 2014附近使用正确的语法

Can someone help. 有人可以帮忙吗? Thanks 谢谢

This is a very bad way to solve the problem. 这是解决问题的非常糟糕的方法。 Among other things, you're depending on the field values to come back in the right order, which isn't guaranteed. 除其他事项外,您依赖于按正确顺序返回的字段值,这不能保证。 It's also trivial to attack this with SQL injection. 用SQL注入攻击它也是微不足道的。

But to answer your question: the '' after the MONTH() clause is probably messing things up. 但是要回答您的问题: MONTH()子句之后的''可能使事情搞砸了。 Your query is probably coming out as 您的查询可能以

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

But there's no easy way to fix that without making bad code worse. 但是没有一种简单的方法可以解决此问题,而又不会使糟糕的代码变得更糟。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM