코드 점화기를 사용하여 응용 프로그램을 만들고 있는데 쿼리 결과를 기반으로 테이블에 행을 삽입하는 데 문제가 있습니다.
내가 원하는 것은 작업을 기반으로 작업 세트를 선택한 다음 해당 작업이 완료되었는지 여부를 기록하는 테이블에 삽입하는 것입니다.
Table Tasks
TaskID TaskGroup TaskDesc
1 WashCar Get Bucket
2 WashCar Fill with Water
3 WashCar Add Soap
4 PolishCar Get Buffer
5 PolishCar Get Polish
6 PolishCar Get Power Lead
따라서 사용자가하는 일은 양식을 작성하고 갈 작업 유형 (예 : Wash Car 또는 Polish Car)을 선택한 다음 제가 원하는 것은 Wash Car와 관련된 모든 작업 ID의 목록을 가져 와서 삽입하는 것입니다. 작업이 완료되었는지 여부를 기록하는 작업 테이블에 예를 들어
Work Table
WorkID TaskID TaskDate TaskComplete
1 1 01/01/2015 N
2 2 01/01/2015 N
3 3 01/01/2015 N
양식을 제출할 때 다른 모든 테이블이 채워지지만 작업 테이블이 채워지지 않습니다. 오류가 없어서 채워지지 않습니다.
이것은 현재 내 모델에있는 것입니다 (다른 Stack Overflow 질문에서 모아 놓은 것입니다).
$workDueDate = date('Y-m-d H:i:s', strtotime('14 days'));
$creator4 = $this->session->userdata('logged_in');
$wkCreator = $creator4['id'];
$workCreator = $wkCreator;
$workCreateDate = date('Y-m-d H:i:s');
$this -> db -> select('taskid');
$this -> db -> from('task');
$this -> db -> where ('taskgroup','washcar');
$this -> db -> order_by('taskid', 'asc');
$workQuery = $this -> db -> get();
return $workQuery->result_array();
for($i=0; $i<$workQuery;$i++){
$insertWork = array(
'taskid' => $workQuery[$i],
'taskdate' => $workDueDate,
'taskcomplete' => 'N',
);
$this->db->insert('work_w',$insertWork);
}
보시다시피 나는 이것에 매우 익숙하며 이것이 작동하는 데 몇 가지 문제가 있습니다. 이것은 최신 반복이며 foreach 루프를 시도했지만 작동하지 않는 것 같습니다.
아무도 내가 여기서 뭘 잘못하고 있는지 또는 이것을 해결하는 가장 좋은 방법에 대한 생각이 있습니까?
감사
편집하다
업데이트 된 코드 :
$workDueDate = date('Y-m-d H:i:s', strtotime('14 days'));
$creator4 = $this->session->userdata('logged_in');
$wkCreator = $creator4['id'];
$workCreator = $wkCreator;
$workCreateDate = date('Y-m-d H:i:s');
$this -> db -> select('taskid');
$this -> db -> from('task');
$this -> db -> where ('taskgroup','washcar');
$this -> db -> order_by('taskid', 'asc');
$workQuery = $this -> db -> get();
foreach ($workQuery as $wtid){
$insertWork = array(
'taskid' => $wtid['taskid'],
'taskdate' => $workDueDate,
'taskcomplete' => 'N',
);
$this->db->insert('work_w',$insertWork);
}
다른 사용자가 언급했듯이 return
루프 직전에 추가 권리가 있습니다.
그러나 이것은이 작업을 수행하는 올바른 방법이 아닙니다. 우선 그것은 모두 데이터와 관련이 있으므로 PHP 대신 데이터베이스의 저장 프로 시저에서 수행하는 것이 좋습니다. 둘째, 루프를 전혀 사용하지 않고도 동일한 결과를 얻을 수 있습니다.
INSERT INTO work_w
(taskid, taskdate, taskcomplete)
SELECT task_id, date_add(CURRENT_DATE, INTERVAL 14 DAY), 'N'
FROM task
WHERE taskgroup = 'washcar'
ORDER BY taskid
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다