2017-03-06 102 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/)。 –