PHP/SQL-搜索两个术语以返回存储在mysqldb中的数据


PHP/SQL - Search two terms to return data stored in mysql db

概念:

  • 用户输入性别、生日(y-m-d)和其他信息,这些信息将被存储在数据库中
  • 有一个查询(query.php)页面,专门用于特定的搜索词,第一种形式是从选择选项(男性、女性)中搜索特定的性别并输入年龄
  • 此表单将张贴到queryRun.php,并显示结果(如果有)

现在我已经尝试过几次了,但我很难在不手动输入生日的情况下将生日更改为年龄。

下面的代码可以工作,但正如您所看到的,$dob是手动输入的(我如何将其更改为上一步中输入数据库的数据)。

<?php
  //birth date in yyyy-mm-dd format
 $dob = "1993-10-03";
//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;   
?>

一旦年龄的计算被排序,我就需要在数据库中搜索输入的标准,我有这个,但它似乎不起作用。。。

if($_POST['sRetrieveBirthday'] && $_POST['sRetrieveGender']) 
    $queryRetrieve = mysql_query( "SELECT * TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) 
    AS sBirthday FROM staffData WHERE TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) > '40'");
    while($info = mysql_fetch_array($queryRetrieve, MYSQL_ASSOC)) 
        {       
echo '    <td>'.$info["sBirthday"].'';

这是我收到的错误,

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/-/www/-/asQueriesRun.php on line 31 SELECT failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) AS sBirthday FROM staffData ' at line 1

有什么想法吗?我已经挣扎了好几天了,如果不让这个核心概念发挥作用,我就无法转到其他搜索查询。

SELECT * 后需要逗号

SELECT *, TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) 
AS sBirthday 
FROM staffData 
WHERE TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) > '40');

如果从SELECT中删除*,它应该可以工作。