2011-03-14 3 views
-1

두 개의 다른 테이블에 값을 넣을 PHP 함수를 작성하려고합니다.하지만 작동하지 않습니다. 어떻게해야합니까? 당신이 오류가 발생하는 경우PHP로 두 개 이상의 테이블에 삽입하십시오. MSSQL의 PDO

public function AddKursplanering($kursBudgetId, $momentId, $momTypID, $pId, $rollId, $tid, $utfall) 
{ 
    if($stmt = $this->m_database->GetPrepareStatement(" INSERT INTO Kursmoment(KBID, MomentID, MomTypID) 
                   VALUES(:kursBudgetId, :momentId, :momTypID) 
                 INSERT INTO Uppgift (KMID, PID, RollID, Tid, Utfall) 
                   VALUES (@@IDENTITY, :pId, :rollId, :tid, :utfall)")) 
    { 
     $stmt->bindValue(':kursBudgetId', $kursBudgetId,PDO::PARAM_INT); 
     $stmt->bindValue(':momentId', $momentId,PDO::PARAM_INT); 
     $stmt->bindValue(':momTypID', $momTypID,PDO::PARAM_INT); 
     $stmt->bindValue(':pId', $pId,PDO::PARAM_INT); 
     $stmt->bindValue(':rollId', $rollId,PDO::PARAM_INT); 
     $stmt->bindValue(':tid', $tid,PDO::PARAM_INT); 
     $stmt->bindValue(':utfall', $utfall,PDO::PARAM_INT); 
     if($stmt->execute()) 
     { 
      $stmt->CloseCursor(); 
      return true; 
     } 
     return false; 
    } 
} 
+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 오류가 있습니까? MSSQL은 기본적으로이 구문을 지원합니까? – Charles

+0

이 더 구체적입니다. 오류 출력을 추가하거나 작동하지 않는 것을 강조 표시하십시오. –

답변

0
  • , 그것은 오류가 아닌 경우
  • 를 오류 텍스트를 게시하지만 어떤 이유로 작동하지 않는 상태를 명확하게 어떤 부분이 작동하지 않습니다

이제 실제로 작동해야하지만 @@IDENTITY 대신 SCOPE_IDENTITY()을 사용하십시오. 트리거가 관련되어 있으면 관련없는 숫자를 반환 할 수 있습니다. 당신이 볼 위의 쿼리에서 오류 메시지를 모른 채 모두 삽입 (본질적으로 동일한 코드)

0

을하는 단일 시저를 호출 할 수 있도록

또한, 매개 변수가있는 저장 프로 시저와 같은 로직을 캡슐화 고려 귀하는 성명 사이에 세미콜론이 있어야합니다. 이를 사용하지 않으면 두 개가 아닌 하나의 쿼리로 해석됩니다.

if($stmt = $this->m_database->GetPrepareStatement(" 
    INSERT INTO Kursmoment(KBID, MomentID, MomTypID) 
    VALUES(:kursBudgetId, :momentId, :momTypID); 
    INSERT INTO Uppgift (KMID, PID, RollID, Tid, Utfall) 
    VALUES (@@IDENTITY, :pId, :rollId, :tid, :utfall)")) 
관련 문제