使用AJAX、PHP和MySQL过滤日期

使用AJAX、PHP和MySQL过滤日期,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我在尝试实施日期筛选器时遇到问题: 我的数据库是这样的: start_date | end_date 2000 | 2005 if (empty($processo) && empty($ano)){ $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE `modelo` = ?"); $pegaSond

我在尝试实施日期筛选器时遇到问题:

我的数据库是这样的:

start_date  |  end_date
2000        |  2005
if (empty($processo) && empty($ano)){
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE `modelo` = ?");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && empty($ano)) {
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && !empty($ano)){
                        //AQUI EU POSSO COLOCAR O FILTRO POR ANO
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    }
"SELECT * FROM sonda WHERE n_processo = '$processo' AND start_date >= '$ano' OR end_date <= '$ano'"
我的PHP选择如下所示:

start_date  |  end_date
2000        |  2005
if (empty($processo) && empty($ano)){
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE `modelo` = ?");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && empty($ano)) {
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && !empty($ano)){
                        //AQUI EU POSSO COLOCAR O FILTRO POR ANO
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    }
"SELECT * FROM sonda WHERE n_processo = '$processo' AND start_date >= '$ano' OR end_date <= '$ano'"
变量$ano(这是用户将在输入文本中写入的年份,ajax将作为Post请求发送到PHP)

当用户键入年份时,如何使用
选择

我尝试的代码如下所示:

start_date  |  end_date
2000        |  2005
if (empty($processo) && empty($ano)){
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE `modelo` = ?");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && empty($ano)) {
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    } else if(!empty($processo) && !empty($ano)){
                        //AQUI EU POSSO COLOCAR O FILTRO POR ANO
                        $pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
                        $pegaSonda->execute();
                    }
"SELECT * FROM sonda WHERE n_processo = '$processo' AND start_date >= '$ano' OR end_date <= '$ano'"

“从sonda中选择*,其中n_processo='$processo',start_date>='$ano'或end_date我们在讨论后得出的答案

'$ano' BETWEEN start_date AND IF(end_date = '', YEAR(CURDATE()), end_date)

请添加一个特定的问题陈述-“它不起作用“可以假设,但它怎么不起作用?什么错误消息或错误行为是特征?@Nathantugy hi mate,我刚刚编辑了它,老实说,我正在学习这个,所以我不知道带日期的选择是否正确,或者我使用的是错误的。嗨,我尝试了你的代码,但我不确定它是否不起作用,因为我的选择中有大量的条件:
“从sonda中选择*,其中n_processo='$processo'和start_date@WilliamXavier如果需要在运算符之间使用,我想我不能在运算符之间使用,因为我有两个字段要比较,对吗?@WilliamXavier'$ano'在start_date和end_date之间很好,它像一个符咒一样工作,以前不工作,因为有时“end_date”字段是空的,有什么办法可以避免这种情况吗?