2013-08-07 4 views
-1

나는 자동차 응용 프로그램을 가지고 있으므로 자동차에는 을 계산할 수있는 많은 정보가 있습니다. 이제 auto이라는 테이블에 필수 사항을 보관 한 다음 멋진 테이블을 만들었습니다. attributes 시원한 테이블. 은 지금은 내가 같은 PDO에서 두 개의 서로 다른 테이블에 동일한 배열의 데이터를 삽입 할 수 있습니다 할같은 문장에서 두 개의 다른 테이블에 삽입 할 수 있습니까?

$sql = "INSERT INTO auto(year, make, model, mileage, price, vin, att1, att2, 
    att3, att4, picture1, picture2, picture3, picture4, picture5, picture6, picture7, picture8, 
    picture9, picture10, picture11, picture12) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

내가 'AND INSERT INTO attributes ('

$sth = $dbh->prepare($sql); 
     $final = array_merge(array_values($vehicleinfo),array_values($paths)); 
     $sth->execute($final); 
     echo '<h4 id="successMessage" style="color: red;">Vehicle added succesfully</h4>'; 
+2

짧은 답 - 할 수 없습니다. –

+0

그림을 다른 테이블로 아웃소싱하는 것을 고려해야합니다. 이것은 유지 보수의 지옥으로 이어질 수 있습니다. 나는 데이터베이스 정규화에 대해 읽는 것을 권장한다. –

+0

저장 프로 시저를 빌드하여 원하는 비즈니스 논리를 캡슐화 할 수 있습니다. 저장 프로 시저 – KeepCalmAndCarryOn

답변

1

나는 SQL을 실행하고자하는 테이블을 루프 처리하고 싶다.

$tables = array('auto', 'attributes'); 

foreach($tables as $table) { 

    $sql = 'INSERT INTO '.$table.' (year, make, model, mileage, price, vin, att1, att2, att3, att4, picture1, picture2, picture3, picture4, picture5, picture6, picture7, picture8, picture9, picture10, picture11, picture12) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; 

    $sth = $dbh->prepare($sql); 
    $final = array_merge(array_values($vehicleinfo), array_values($paths)); 
    $sth->execute($final); 

    echo '<h4 id="successMessage" style="color: red;">Vehicle added successfully to '.$table.'</h4>'; 

} 

단순히 함수를 만들어 필요한 테이블을 전달하면됩니다.

insertVehicleInfo('auto'); 
insertVehicleInfo('attributes'); 

function insertVehicleInfo($table) { 

    $sql = 'INSERT INTO '.$table.' (year, make, model, mileage, price, vin, att1, att2, att3, att4, picture1, picture2, picture3, picture4, picture5, picture6, picture7, picture8, picture9, picture10, picture11, picture12) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; 

    $sth = $dbh->prepare($sql); 
    $final = array_merge(array_values($vehicleinfo), array_values($paths)); 
    $sth->execute($final); 

    echo '<h4 id="successMessage" style="color: red;">Vehicle added successfully to '.$table.'</h4>'; 

} 
+0

세계에서이 무엇입니까 –

+1

문제의 해결책. 동일한 데이터 집합에 똑같은 작업을 수행하려고하므로 삽입하려는 두 테이블을 루핑하거나 테이블 이름을 전달하는 함수를 만드는 것이 원하는 작업을 수행하는 가장 쉬운 방법입니다. 이루다. – olimortimer

+0

어떻게 내가 속성 테이블이 또한 기본 키와 자동 incremt auto_id를 가지고있는 다른 자동 테이블에서 올바른 auto_id를 얻을 수 있는지 확인합니다. –

2

같은 삽입 첫 번째 테이블에 삽입에 트리거를 추가 할 수 두 번째 것과 동일합니다.

+0

트리거? 나는 어느 쪽인가 길게 길기 때문에 분리 된 SQL을 실행해야하지만, 트리거가 의미하는 바를 이해하는데 관심이있다. –

+2

MySQL 트리거. 그냥 구글, 당신은 볼 수 있습니다 :) –

+0

@ N.B. 분명히 트리거가 이런 상황에서 일종의, 그들은 열심히 mantain, SQL 관리 할 생각이 가장 성명에서 대신 코드에서 할 수 있습니다. 좋은 tho, 감사합니다 알고 알아. –

관련 문제