2015-09-04 51 views
1

我想弄清楚爲什麼這個在foreach中的MYSQL INSERT不會插入任何東西到mysql數據庫!在foreach中插入mysql是不行的?

// Parse the form data and add inventory item to the system 
    if (isset($_POST['g_name'])) { 


     $g_name =$_POST['g_name']; 
     $numbers = $_POST['numbers']; 

     $comma_separated = explode(", ", $numbers); 


     foreach($comma_separated as $seperate){ 

     $sql .="INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')"; 

     } 

$query = mysqli_query($db_conx, $sql); 
     header("location: groups.php"); 
     exit(); 
    } 

如果我改變$sql .=$sql =它在MySQL數據庫中插入只有一個值。

$numbers值是這樣的:1,2,3,4,5

可能有人請告知這個問題?

任何幫助,將不勝感激。

+1

你在哪裏執行查詢?從你顯示的代碼開始,它就被構建。 – Script47

+0

也顯示查詢代碼。我懷疑您使用的擴展名不允許多重查詢。 – DeDee

+0

對不起,我編輯了我的問題! –

回答

5

更改你的循環,所以你執行查詢每次:

foreach($comma_separated as $seperate){ 

    $sql ="INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')"; 
    $query = mysqli_query($db_conx, $sql); 
} 

你應該記住,your script is at risk for SQL Injection Attacks.瞭解preparedstatements

+0

非常好。我當時是個瘋子。 –

1

您需要在循環內執行查詢,以便多次插入。

<?php 
foreach($comma_separated as $seperate) { 
    $sql = "INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')"; 

    $query = mysqli_query($db_conx, $sql); 
} 
?> 

您還應該考慮使用預準備語句。

4

而不是嘗試執行多個查詢,您可以使用此語法插入多個記錄與一個查詢。

$sql = "INSERT INTO groups(`g_name`, `numbers`) VALUES"; 
$comma = ''; 

foreach($comma_separated as $seperate){ 
    $sql .="$comma ('$g_name','$seperate')"; 
    $comma = ','; 
} 

$query = mysqli_query($db_conx, $sql); 

MySQL documentation

的INSERT語句使用價值語法可以插入多行。爲此,請包含多個列值列表,每個列表值都包含在括號內,並用逗號分隔。

例子:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);