2014-12-06 8 views
0

두 테이블을 동시에 업데이트 할 수있는 방법이 있습니까? 나는 이것이 내가 삽입 된 제품 나는 테이블을 food_menu과의 food_r 값을에 삽입해야 볼 수 있도록하려면 지금 음식동시에 두 테이블에서 업데이트

$rest_id = null; 
if (!empty($_GET['rest_id'])) 
{ 
    $rest_id = $_REQUEST['rest_id']; 
} 
if (null==$rest_id) 
{ 
    echo "null==$rest_id"; 
} 
if(isSet($_POST['submit'])) 
{ 
    // keep track post values 
    $food_name = $_POST['food_name']; 
    $food_description = $_POST['food_description']; 
    $food_menu = $rest_id; 
    $usertype = $_SESSION['usertype']; 

    // update data 
    $pdo = Database::connect(); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = $pdo->prepare("INSERT INTO food (food_name, food_description, food_menu, usertype) 
       VALUES (:food_name, :food_description, :food_menu, :usertype)"); 

        $sql->execute(array(
        ':food_name' => $food_name, 
        ':food_description' => $food_description, 
        ':food_menu' => $food_id, 
        ':usertype'  => $_SESSION['usertype']       
        )); 
        Database::disconnect(); 
        echo "Product added!"; 
      } 

에 삽입되는 코드입니다 테이블 food 및 테이블 food_r

usertype의 값. 어떻게해야합니까?

업데이트 : 그것은 그렇게 작동합니다. 거래를 가리켜 주신 것에 대해 @JonathonWisnoski에게 감사드립니다..

$pdo->beginTransaction(); 
    $sql = $pdo->prepare("INSERT INTO food (food_name, food_description, food_menu, usertype) 
       VALUES (:food_name, :food_description, :food_menu, :usertype)"); 

     $sql->execute(array(
     ':food_name' => $food_name, 
     ':food_description' => $food_description, 
     ':food_menu' => $rest_id, 
     ':usertype'  => $_SESSION['usertype']       
     )); 
     $lastInsertID = $pdo->lastInsertId(); 
    $sql = $pdo->prepare("INSERT INTO food_r (food_id, usertype) 
        VALUES (:rest_id, :usertype)"); 
     $sql->execute(array(
     ':rest_id'  => $lastInsertID, 
     ':usertype' => $rest_id 
     )); 
     $pdo->commit(); 
+3

이것은 거래와 관련이 있습니다. 트랜잭션의 일반적인 개념은 수많은 inssions/etc를 준비하는 것입니다. 그리고 모든 것을 한 번에 저지하십시오. – Jonathon

+0

참조 : http://stackoverflow.com/questions/5178697/mysql-insert-into-multiple-tables-database-normalization – Jonathon

+1

두 테이블에 삽입하거나 두 테이블을 업데이트 하시겠습니까? –

답변

1

업데이트 : 그것은 그렇게 작동합니다. 거래를 가리켜 주신 것에 대해 @JonathonWisnoski에게 감사드립니다..

나는 또한 오류가있을 경우 try{}catch{} 블록을 넣었습니다.

try 
{ 
    $pdo->beginTransaction(); 
    $sql = $pdo->prepare("INSERT INTO food (food_name, food_description, food_menu, usertype) 
       VALUES (:food_name, :food_description, :food_menu, :usertype)"); 

     $sql->execute(array(
     ':food_name' => $food_name, 
     ':food_description' => $food_description, 
     ':food_menu' => $rest_id, 
     ':usertype'  => $_SESSION['usertype']       
     )); 
     $lastInsertID = $pdo->lastInsertId(); 
    $sql = $pdo->prepare("INSERT INTO food_r (food_id, usertype) 
        VALUES (:rest_id, :usertype)"); 
     $sql->execute(array(
     ':rest_id'  => $lastInsertID, 
     ':usertype' => $rest_id 
     )); 
     $pdo->commit(); 
    }     
    // any errors from the above database queries will be catched 
    catch (PDOException $e) 
    { 
     // roll back transaction 
     $pdo->rollback(); 
     // log any errors to file 
     ExceptionErrorHandler($e); 
     exit; 
    } 
관련 문제