2015-11-06 103 views
0

我必須將多行數據保存到數據庫表中。多行保存到數據庫表

我爲此寫了這段代碼。但是當我運行這段代碼時,兩行將被保存到db表的兩行中,但是其他每行都與最後一行數據相同。

即,即最後一行數據覆蓋每隔一行的數據。

$values = array(); 

if (isset($_POST['sub_save'])) { 
    $row_count = $_POST['rowcount']; 

    while ($row_count > 0) { 
     for ($r = 1; $r <= 2; $r++) { 
      $val = $_POST['txt'.$row_count.$r]; 
      $values[] = $val; 
     } 

     $row_count = $row_count - 1; 
     $sql = "insert into timesheet_entry (name, address) values ('$values[0]', '$values[1]')"; 

     if (mysql_query($sql)) { 
      echo "inserted"; 
     } else { 
      echo "fail"; 
     } 
    } 
} 
+0

你在發佈HTML結構化數據的方式是*可怕的*和可能的原因在這裏的問題。 – symcbean

+0

可以告訴我應該在哪裏更改我的代碼? –

+0

從一開始 - 但我懷疑這不是你要找的答案。不要嘗試將預生成的代理鍵合併到組合鍵中(或者如果您必須,至少要劃分組件)。 – symcbean

回答

1

你是不是重新循環內你的價值觀數組,以便值[0]和值[1]總會有第一個值。

if (isset($_POST['sub_save'])) { 
    $row_count = $_POST['rowcount']; 

    while ($row_count > 0) { 
     $values = array(); 
     for ($r = 1; $r <= 2; $r++) { 
      $val = $_POST['txt'.$row_count.$r]; 
      $values[] = $val; 
     } 

     $row_count = $row_count - 1; 
     $sql = "insert into timesheet_entry (name, address) values ('$values[0]', '$values[1]')"; 

     if (mysql_query($sql)) { 
      echo "inserted"; 
     } else { 
      echo "fail"; 
     } 
    } 
} 

在一個旁註,我會建議尋找到PDO擴展和參數化查詢作爲mysql_已被棄用,上面的代碼很容易受到SQL注入

+0

謝謝丹尼 –

0

你混合mysqlmysqli

$conn = mysqli_connect("localhost", "root", ""); 
$db = mysqli_select_db("dbname"); 

if (mysqli_query($sql)) { 
    echo "inserted"; 
} else { 
    echo "fail"; 
} 
+0

好吧我會糾正它,但問題是行正在保存,但最後一行數據覆蓋上述行..你能幫我嗎? –