2017-03-06 85 views
-2

好日子所有只插入最後一排

我在一個小的PHP項目,我一個逗號delimated字符串發送到我的PHP腳本工作。 我遇到的問題是,我試圖讓腳本執行5次,並插入5個值,但到目前爲止,我看到做錯了,只有最後的值被插入。

我改變了$變量的值來查看問題是否與我使用的字符串一致,但仍然沒有變化。感謝任何幫助,因爲我已將我的代碼放在下面。

$variable = 'value1, value2, value3, value4, value5'; 
    $arrs = explode(',', $variable); 
    foreach($arrs as $arr){ 


$sql = "INSERT INTO diver(refno,f_name,l_name,sig) VALUES ('$refno','$f_name','$variable',',')"; 

    } 


if(mysqli_query($conn,$sql)){ 
echo "Works "; 
}else{ 
echo("Error description: " . mysqli_error($conn)); 

} 
}else{ 
echo("Error description: " . mysqli_error($conn)); 
} 
+1

您覆蓋$每次迭代的sql因此最後一個也是唯一一個執行 –

+0

只是移動循環內的查詢執行。(和刪除第二個'else',它可能已被複制兩次) – Kaddath

+0

[Little Bobby](http://bobby-tables.com/)說*** [您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/ 60174/how-can-i-prevent-sql -injection-in-php)***瞭解[MySQLi](http:/ /)的[prepared](http://en.wikipedia.org/wiki/Prepared_statement) /php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信它?](http://stackoverflow.com/q/38297105/1011527) –

回答

-1

試試這個

$conn = mysqli_connect('host','user','pw','db'); 
$variables = 'value1, value2, value3, value4, value5'; 
$variables = explode(',', $variables); 
$sql = "INSERT INTO diver(refno,f_name,l_name,sig) VALUES "; 
$rows = array(); 
foreach($variables as $variable){ 
    $rows[] = "('$refno','$f_name','$variable','')"; 
} 
$sql .= implode(",",$rows); 
if(mysqli_query($conn,$sql)){ 
    echo "Works "; 
} 
else{ 
    echo("Error description: " . mysqli_error($conn)); 
} 
+0

不錯的主意...... ;-) – arkascha

+0

做或不​​做。沒有「嘗試」。一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can- ***)瞭解[MySQLi](http://php.net/manual)[準備](http://en.wikipedia.org/wiki/Prepared_statement)聲明/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信它?](http://stackoverflow.com/q/38297105/1011527) –

0

您應該執行在的foreach

foreach($arrs as $arr){ 
     $sql = "INSERT INTO diver(refno,f_name,l_name,sig) VALUES 
     ('$refno','$f_name','$variable',',')"; 
     mysqli_query($conn,$sql); 
    } 

每次迭代mysqli_query否則執行插入只有最後時間(foreach結束後)

+0

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can- ***)瞭解[MySQLi](http://php.net/manual)[準備](http://en.wikipedia.org/wiki/Prepared_statement)聲明/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信嗎?](http://stackoverflow.com/q/38297105/1011527) –

+0

@JayBlanchard正確..和你的評論通知OP的這一事實.. – scaisEdge

+0

如果你張貼沒有準備好的陳述的答案[你可能想在發佈答案之前考慮這個問題](http://meta.stackoverflow.com/q/344703/)。 –

0

你需要運行內部查詢

foreach($arrs as $arr){ 
     $sql = "INSERT INTO diver(refno,f_name,l_name,sig) VALUES ('$refno','$f_name','$variable',',')"; 
     mysqli_query($conn,$sql) 
    } 

雖然沒有實際變化?即時猜測$變量應該是$ ARR? VALUES ('$refno','$f_name','$arr',',')

+0

[Little Bobby](http://bobby-tables.com/)表示*** [您的腳本存在SQL注入攻擊風險。](http:// stackoverflow *** /瞭解[準備](http://en.wikipedia.org/wiki/Prepared_statement)對於[MySQLi ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信它?](http:// stackoverflow。com/q/38297105/1011527) –

+1

如果您發佈的答案沒有準備好的陳述[您可能想在發佈答案之前考慮此問題](http://meta.stackoverflow.com/q/344703/)。 –