在While循环中使用mysql_num_rows

时间:2014-05-27 08:41:33

标签: php while-loop mysql-num-rows

我有一个查询选择一组匹配的元素,然后一个If条件ckecking这些匹配元素中的一个(或多个)是否有效,这取决于它们在几个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上应用哪个查询作为此查询({ {1}})在应用If。

之前会导致匹配元素的数量

如何获得与If条件匹配的元素总数?

1 个答案:

答案 0 :(得分:0)

以下是应该使用的代码:未经测试。它将查询返回的行数设置为$ 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++;
     }
 }