我正在开发一个自动化项目管理流程的Web应用程序。
我定义了一个task_node
类,它代表项目中的任务。
completePath
函数根据序列关系完成从当前任务$tNode
到任务结束的项目路径。
我的问题是第一次调用completePath
后执行停止了。
这是我的代码:
private function completePath($tNode,$counter)
{
// getting data from DB works properly
echo '<br>counter:'.$counter.' <br>task name:'.$tNode->task_name;
$helper=new MySQLHelper();
//getting initial tasks
$cond=" t2.source_task_id='$tNode->task_id'
And t2.relation_type='sequence'
AND t1.task_id=t2.target_task_id";
$tables="tasks t1 , tasks_relations t2";
$nextTask=$helper->getData($tables,'t1.task_id,t1.task_name,t1.task_duration',$cond);
if(mysql_num_rows($nextTask)!=0) // stopping condition
{
$row=mysql_fetch_array($nextTask);
$tNode->nextTask=new Task_Node($row['task_id'],$row['task_name'],$row['task_duration']);
completePath($tNode->nextTask,++$counter);// execution stopped here
}
}
任何想法?谢谢你
答案 0 :(得分:0)
使用
sizeof($nextTask)
或
count($nextTask)
取代
mysql_num_rows($nextTask).
因为mysql_num_rows()从结果集中检索行数。
答案 1 :(得分:0)
根据您提供的信息,您应该循环资源结果:
if(mysql_num_rows($nextTask)>0) // stopping condition
{
while($row=mysql_fetch_array($nextTask,MYSQL_ASSOC)){ // loop through the result set
$tNode->nextTask=new Task_Node($row['task_id'],$row['task_name'],$row['task_duration']);
completePath($tNode->nextTask,++$counter);// execution stopped here
}
}
mysql_fetch_array
返回一个与获取的行对应的数组,并将内部数据指针向前移动。
另请注意,mysql_ *函数已从PHP 5.5中弃用。请尝试使用mysqli
。