2011-08-10 3 views
0

데이터베이스 SQLITE3에 PHP PDO를 사용하고 있습니다. 누군가이 명령을 하나의 트랜잭션에 넣는 방법을 보여줄 수 있습니까?PHP PDO에서 트랜잭션 문제가 발생했습니다.

  $db = new PDO('sqlite:/var/db/fan_coil.db'); 
      $sql = 'DELETE FROM fan_coil_plan WHERE fan_coil_id = :fan_coil_id;'; 
      $sth = $db->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
      $sth->execute(array(':fan_coil_id' => $fan_coil_id)); 

      $sql = ' DELETE FROM fan_coil_working_mode WHERE fan_coil_id = :fan_coil_id;'; 
      $sth = $db->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
      $sth->execute(array(':fan_coil_id' => $fan_coil_id)); 


      //****************** inserting working mode ************************************************************************************************* 


       $i = 0; 
       $sql = 'INSERT INTO fan_coil_working_mode 
       (fan_coil_id,working_mode, temperature_set_point, max_positive_temperature,min_positive_temperature,mode_type,max_fan_speed) 
       VALUES(:fan_coil_id,:working_mode,:temperature_set_point,:max_positive_temperature,:min_positive_temperature,:mode_type,:max_fan_speed)'; 
       $sth = $db->prepare($sql); 

      foreach ($modes as $key => $value) { 
//file_put_contents('error.txt',$value['temperature_set_point'], FILE_APPEND); 
       $working_mode = '0'; //treba da se izbaci ova kolona iz tabele 
       $temperature_set_point = $value['temperature_set_point']; 
       $max_positive_variation = $value['max_positive_variation']; 
       $min_positive_variation = $value['min_positive_variation']; 
       $max_fan_speed = $value['max_fan_speed']; 
       $mode_type = ++$i; 

       $sth->execute(array(':fan_coil_id' => $fan_coil_id, ':working_mode' => $working_mode, ':temperature_set_point' => $temperature_set_point, ':max_positive_temperature' => $max_positive_temperature, ':min_positive_temperature' => $min_positive_temperature, ':mode_type' => $mode_type, ':max_fan_speed' => $max_fan_speeed)); 
      } 

답변

2
$db = new PDO('sqlite:/var/db/fan_coil.db'); 
$db->beginTransaction(); 

try { 
    // your code 
    $db->commit(); 
}catch(PDOException $e) { 
    $db->rollBack(); 
    throw $e; 
} 
관련 문제