2014-02-06 27 views
1

我在做一項調查,目前數據庫有19個表格和大約100列。所有這些將被插入,因爲它們是必需的字段。我正在尋找一種優雅和高效的方式插入到許多表和列中。到目前爲止,我想到的是創建一個多維數組,其中第一個鍵作爲表名,第二個鍵作爲字段的列名。像下面的東西:插入大量表格的優雅高效方法MySQL

$tableArray = array( 
     'ownerTable' => array(
      'firstNameRow' => $firstName, 
      'lastNameRow' => $lastName 
     ), 
     'dealerTable' => array(
      'dealerNameRow' => $dealerName, 
      'dealerCityRow' => $dealerCity 
      ) 
     ); 

foreach($tableArray as $row => $key) { 
    foreach($tableArray[$row] as $row1) { 
     $sql = "(INSERT INTO $tableArray[$key] ($tableArray[$row]) VALUES ($row1)"; 
    } 
} 

我沒有測試這段代碼,但我想這些行的東西會工作。我認爲我看到的一個問題是針對每個列的單獨INSERT,而不是每個表的INSERT。我總是可以編寫代碼來一次加載數組中的所有值來解決這個問題,但是在我開始走開之前,我想確保我沒有犯大錯,並且浪費時間,如果有的話更好的方式來做到這一點。

+1

對於調查來說,19個表格和100列看起來效率不高。 – helion3

+1

我會作爲答覆發佈,但我不確定這一點。也許把它分解爲'$ sql =「insert into」;'=>你的2個foreach函數然後是'$ sql。= $ tableArray [$ key]。「(」。$ tableArray [$ row]。「)VALUES(」 。$ row1。「)」;'然後運行'mysql_query($ sql);'我希望這是有道理的,我在我的手機上,但你的表名/值應該在循環中,然後在你的循環之外運行你的查詢。那麼它應該只是一個插入,如果我的邏輯是正確的 – KyleMassacre

+0

@ helion3由低效率是什麼意思?對於表的數量或許多表的列數很少的表?我可以誠實地將列拆分成更多的表格,但是由於大多數的膨脹是來自簡單的是或否的答案,所以它們可能無關緊要,因爲它們全都相互關聯。 – Yamaha32088

回答

0
$tableArray = array( 
     'ownerTable' => array(
      'firstNameRow' => $firstName, 
      'lastNameRow' => $lastName 
     ), 
     'dealerTable' => array(
      'dealerNameRow' => $dealerName, 
      'dealerCityRow' => $dealerCity 
      ) 
     ); 

//it's for bulj query execution in single statment; 
$i=1; 
$sql=""; 
foreach($tableArray as $row => $key) { 
    foreach($tableArray[$row] as $row1) { 
     //here you can update i value as per row for execution 
     if($i<=25) 
     { 
     $sql = $sql + "(INSERT INTO $tableArray[$key] ($tableArray[$row]) VALUES ($row1);"; 
     } 
     else 
     { 
      //execute sql statement here; 
      $i=0; 
      $sql=""; 
     } 
    } 
}