PHP / HTML / SQL - 搜索特定年龄和性别的数据库

时间:2015-02-13 20:33:12

标签: php html mysql date post

我想在检索数据时为搜索表单提供多个选项,我目前在这些行中获得了针对1个特定搜索词的内容。

    <form action="sRetrieveResponse.php" method="post">
        <input type="text" placeholder="Enter Email..." name="sRetrieveEmail">
        <input type="submit" value="Retrieve"></form>

上面是html表单,下面是php。

if($_POST['sRetrieveEmail']) 
    $queryRetrieve = mysql_query( "SELECT * FROM staffData WHERE sEmail='".$_POST['sRetrieveEmail']."'" );

然后将它打印到桌子上,我将如何制作它以便找到两个搜索词?例如40岁或以上的男性......

其中的另一个问题是,我目前只以日期形式过生日,如何将此数据更改为年龄,以便可以执行搜索字词?

对不起,如果措辞没有意义,我不太确定即使是什么即时可以完成,因为我是一个非常新的编程,任何没有意义,请问!并且生病了进一步澄清它。

谢谢。


评论中的答案几乎就在那里! - 搜索查询现在已经排序,但如果用户提交了他们的生日,我将如何计算年龄:2015-01-27。

3 个答案:

答案 0 :(得分:1)

MySQL OR ..

Select * FROM staffData WHERE eEmail='..' OR eGender='..'

如果您想匹配这两个标准,请使用AND,或者您甚至可以将它们组合使用

...WHERE eEmail='..' OR (eGender='..' AND 'eLastName Like '..%);

关于年龄,您可以在选择中创建年龄字段:

Select eFirstName, TIMESTAMPDIFF(YEAR, eBirthdate, CURDATE()) AS age FROM staffData WHERE TIMESTAMPDIFF(YEAR, eBirthdate, CURDATE()) > '..';

答案 1 :(得分:0)

我不是100%根据你的要求。要根据多个条件提取数据,您可以更改自己的查询。

看起来像这样。

SELECT * FROM staffData WHERE mEmail='".$_POST['sRetrieveEmail']."' AND (age>=40) AND (gender LIKE "male");

答案 2 :(得分:0)

首先将日期转换为年龄并运行查询

 <?php
  //birth date in yyyy-mm-dd format
  $dob = "1990-01-01";

//explode the date to get year , month and day
 $dob = explode("-", $dob);


 //get age from date or birthdate
    $current_month = date("m");
    $current_day = date("j");
    $current_year = date("Y");
    $age = $current_year - $dob[0]; 
    if($current_month<$dob[1] || ($current_month==$dob[1] && $current_day<$dob[2])) $age--; 
    echo "Age is ". $age;   

?>