我有一个选择一组匹配元素的查询,然后有一个If条件检查这些匹配元素中的一个(或多个)是否有效,这取决于它们在一对DATE字段中包含的内容。
$allClasses=mysql_query("SELECT * FROM class_conf WHERE cl_fk_te_id='$te_id' && cl_status='1'");
$identifiedClassId="";
while($registros = mysql_fetch_array($allClasses)){
$start_date=$registros['cl_startDate'];
$end_date=$registros['cl_endDate'];
$start_year=substr($start_date, 6, 4);
$end_year=substr($end_date, 6, 4);
$start_month=substr($start_date, 3, 2);
$end_month=substr($end_date, 3, 2);
$start_day=substr($start_date, 0, 2);
$end_day=substr($end_date, 0, 2);
if(($start_year <= $year) && ($end_year >= $year) && ($start_month <= $month) && ($end_month >= $month) && ($start_day <= $day) && ($end_day >= $day)) {
$identifiedClassId=$registros['cl_id'];
}
}
现在我需要使用类似mysql_num_rows
的东西来检查匹配这个If条件的元素总数,我不知道在mysql_num_rows
上应用什么查询,因为这个查询(mysql_num_rows($allClasses)
)将导致在应用If之前匹配元素的数量。
如何获得符合If条件的元素总数?
下面是应该使用的代码:它没有经过测试。它将查询返回的行数的计数设置为$totalElements。
添加了所有赋值到$identifiedClassId的计数,我怀疑这是不正确的。
$allClasses=mysql_query("SELECT * FROM class_conf WHERE cl_fk_te_id='$te_id' && cl_status='1'");
$totalElements = mysql_num_rows($allClasses); // count of the elements
$identifiedClassId="";
$countIdentifiedClassId = 0;
while($registros = mysql_fetch_array($allClasses)){
$start_date=$registros['cl_startDate'];
$end_date=$registros['cl_endDate'];
$start_year=substr($start_date, 6, 4);
$end_year=substr($end_date, 6, 4);
$start_month=substr($start_date, 3, 2);
$end_month=substr($end_date, 3, 2);
$start_day=substr($start_date, 0, 2);
$end_day=substr($end_date, 0, 2);
if(($start_year <= $year) && ($end_year >= $year) && ($start_month <= $month) && ($end_month >= $month) && ($start_day <= $day) && ($end_day >= $day)) {
$identifiedClassId=$registros['cl_id'];
$countIdentifiedClassId++;
}
}