PHP/SQL - 搜索 return 存储在 mysql 数据库中的数据的两个术语
PHP/SQL - Search two terms to return data stored in mysql db
概念:
- 用户输入性别、生日(y-m-d)等信息,这个被存储
在数据库中。
- 有一个查询(
query.php
)页面,专门针对特定的搜索词,第一种形式是从select选项中搜索特定性别(男,女)并输入年龄.
- 此表单已发布到
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 *
后需要逗号
SELECT *, TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE())
AS sBirthday
FROM staffData
WHERE TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) > '40');
概念:
- 用户输入性别、生日(y-m-d)等信息,这个被存储 在数据库中。
- 有一个查询(
query.php
)页面,专门针对特定的搜索词,第一种形式是从select选项中搜索特定性别(男,女)并输入年龄. - 此表单已发布到
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 *
SELECT *, TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE())
AS sBirthday
FROM staffData
WHERE TIMESTAMPDIFF(YEAR, sRetrieveBirthday, CURDATE()) > '40');