2013-10-14 37 views
-1

我有大約十個表單項我想插入到MySQL數據庫中,並且表單中的每個輸入都有一個也是錶行名的名稱。你可以得到什麼,我想在這裏做了一個想法:將許多動態生成的值插入到與MySQL相同的記錄中

foreach($_POST as $x=>$y) { 

    if(!empty($y)) { 

      $sql = "INSERT INTO db.table (`$x`) values ('$y');"; 
      // execute 
     } 
} 

...我的問題是,我需要做的一切進入相同的記錄。現在,每個「插入」都被添加到一個新的記錄。是否有可能獲得第一個「INSERT」的記錄的id,然後從那裏使用「Update」?還是有更好的方法來做到這一點?

感謝

+2

請在將此代碼投入生產之前停止並閱讀有關MySQL注入的信息。這是一場等待發生的災難。 – andy

+0

是的,我正在努力獲得正確的輸出第一,然後我要使用準備好的語句的一切 –

+1

更好的方法會做**明確**,而不是試圖與這樣的循環的東西聰明..它最終只會咬你。 – Bobby

回答

1

首先,你應該對@andy 指出的MySQL注入做些什麼說了一下,你可以嘗試這樣的事情,它只是一次性添加所有的值。 在這一點上應該不需要更新。

$columns = ''; 
$values = ''; 
$sql = "INSERT INTO db.table (%s) values (%s);"; 

foreach($_POST as $x=>$y) { 
    if(!empty($y)) { 
     $columns .= $x.','; 
     $values .= $y.','; 
    } 
} 

$columns = substr($columns,0,strlen($columns)-1)); 
$values = substr($values,0,strlen($values)-1)); 

$sql = sprintf($sql, $columns, $values); 
//execute 
1

檢查此功能:mysqli::insert_id
您可以執行第一查詢作爲insert,獲得與該功能生成的ID,然後執行update查詢。

相關問題