【问题标题】:PHP/HTML/SQL - Search database for a specific age and genderPHP/HTML/SQL - 搜索特定年龄和性别的数据库
【发布时间】:2015-04-15 00:10:31
【问题描述】:

我希望在检索数据时为搜索表单提供多个选项,目前我已经为 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岁或以上的男性...

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

对不起,如果措辞没有意义,我不太确定我所追求的是否可以完成,因为我对编程很陌生,任何没有意义的东西请问!我会尝试更深入地澄清它。

谢谢。


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

【问题讨论】:

  • 仅供参考你会因为不使用myqsli_*而受到打击
  • 年龄是如何存储在数据库中的?如何查询(从表单)?
  • 检查我编辑的答案!您需要即时计算年龄.. TIMESTAMPDIFF 是要使用的功能.. DATEDIFF 不会为您提供您正在寻找的全年差异
  • 阅读 SQL 注入

标签: php html mysql date post


【解决方案1】:

MySQL 或..

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()) > '..';

【讨论】:

  • 我明白这一点,但我将如何使它成为 SELECT * FROM staffData where sAge 大于 40 并且 sGender = male。
  • @ili sAge &gt; 40 AND sGender='male' 这完全取决于您的生日是如何存储的。
  • @PanamaJack 就像这样,2015-01-27
  • 刚刚添加了一些年龄信息。您需要在 SQL 中即时计算年龄
  • @whiteatom - 我将如何计算年龄?出于某种原因,当我有这样的事情 diff($date);回声 $interval->y; ?> 它似乎没有用,在 DateTime() 上出现错误
【解决方案2】:

先将日期转换为年龄,然后运行查询

 <?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;   

?>

【讨论】:

  • 唯一的问题是我想从另一个页面发布生日
  • 你不能在那个页面计算这个年龄并发布年龄吗?
猜你喜欢
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多