我想制作一个选择查询,以便在最小和最大年龄之间搜索寻找人。这是搜索值来自我的搜索表单的方式。
Array
(
[iam] => Man
[seeking] => Woman
[age_min] => 18
[age_max] => 19
[country_id] => 25
)
我已将这些值存储在两个mysql表中。一个是user
,另一个是Countries
。我的问题是用户表中没有用于存储用户年龄的列。年龄根据用户的出生日期计算,用户表有一列存储用户DOB。
我的users
表格如下:
CREATE TABLE IF NOT EXISTS users (
user_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
country_id SMALLINT UNSIGNED NOT NULL,
username VARCHAR(20) NOT NULL,
email varchar(40) NOT NULL,
first_name VARCHAR(30) DEFAULT NULL,
sex ENUM('Male', 'Female') DEFAULT 'Male',
dob VARCHAR(10) NOT NULL,
address VARCHAR(40) DEFAULT NULL,
city VARCHAR(25) NOT NULL,
last_login TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id),
UNIQUE (email),
UNIQUE (username)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
在国家/地区表格中,它有country_id
和country_name
。
因此。我能否知道有没有办法使用MySql SELECT
查询来执行此操作。
希望有人可以帮助我。
谢谢。
答案 0 :(得分:0)
TIMESTAMPDIFF会告诉你两个日期的区别,所以如果你通过dob和当前日期,基本上会让你年龄。
注意:确保清理输入。
$Query = "SELECT * FROM users
WHERE
TIMESTAMPDIFF(YEAR, dob, CURDATE()) >= '{$_POST['age_min']}' AND
TIMESTAMPDIFF(YEAR, dob, CURDATE()) <= '{$_POST['age_max']}' AND
sex = '{$_POST['seeking']}' AND
country_id = '{$_POST['country_id']}'";