我有一个表单,用户可以在其中输入年龄并选择性别,然后返回该特定年龄段内具有该特定性别的所有数据。
这是我必须查找此数据的SQL查询:
if($_POST['sRetrieve1'])
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'".$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
然后通过
打印出来echo ' <table id="myTable" class="tablesorter">';
echo ' <thead> ';
echo ' <tr> ';
echo ' <th>Gender</th> ';
echo ' <th>Fullname</th> ';
echo ' <th>Age</th> ';
echo ' <th>Job Title</th> ';
echo ' <th>Email</th> ';
echo ' <th>Contact no.</th> ';
echo ' <th>Address</th> ';
echo ' <th>Date Joined</th> ';
echo ' </tr> ';
echo ' </thead> ';
echo ' <tbody> ';
while($info = mysql_fetch_array($queryRetrieve, MYSQL_ASSOC))
{
echo ' <tr> ';
echo ' <td>'.$info["sGender"].'';
echo ' <td>'.$info["sFN"].'';
echo '  '.$info["sSN"].'';
echo ' <td>'.$info["sBirthday"].'</td> ';
echo ' <td>'.$info["sJobTitle"].'';
echo ' <td>'.$info["sEmail"].'</td>';
echo ' <td>'.$info["sPhone"].'</td> ';
echo ' <td>'.$info["sAddress"].'</td> ';
echo ' <td>'.$info["sDateJoined"].'</td> ';
echo ' </tr> ';
}
但是这只是显示sBirthday,我怎么能这样做,所以其他领域都在哪里?
select *
的原因是因为sBirthday字段原本只是一个生日,因此为什么需要计算来计算年龄。答案 0 :(得分:2)
您需要添加要选择的字段,如下所示:
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday,sGender, sFN [ALL THE REST] FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
将[ALL THE REST]替换为逗号分隔的字段列表
如果您仍想使用*(但通常最好不要使用),您可以这样做:
$queryRetrieve = mysql_query( "SELECT *, TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthdayXXXXX FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
然后只需更改
echo ' <td>'.$info["sBirthday"].'</td> ';
到
echo ' <td>'.$info["sBirthdayXXXXX"].'</td> ';