Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用“插入”仅为每一行插入最后一行_Php - Fatal编程技术网

Php 使用“插入”仅为每一行插入最后一行

Php 使用“插入”仅为每一行插入最后一行,php,Php,大家好 我正在做一个小的php项目,在这个项目中,我向我的php脚本发送一个逗号删除字符串。 我遇到的问题是,我试图让脚本执行5次,并插入5个值,但到目前为止,我发现做了一些错误的事情,只插入了最终值 我已经更改了$variable的值,以查看问题是否与我使用的字符串有关,但仍然没有更改。感谢您的帮助,因为我已将代码放在下面 $variable = 'value1, value2, value3, value4, value5'; $arrs = explode(',', $varia

大家好

我正在做一个小的php项目,在这个项目中,我向我的php脚本发送一个逗号删除字符串。 我遇到的问题是,我试图让脚本执行5次,并插入5个值,但到目前为止,我发现做了一些错误的事情,只插入了最终值

我已经更改了$variable的值,以查看问题是否与我使用的字符串有关,但仍然没有更改。感谢您的帮助,因为我已将代码放在下面

 $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));
}
您应该在foreach的每个迭代中执行mysqli_查询

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

否则,您只能在foreach结束后的最后一次执行insert

您需要在foreach内部运行查询

   foreach($arrs as $arr){ 
        $sql = "INSERT INTO diver(refno,f_name,l_name,sig) VALUES ('$refno','$f_name','$variable',',')";
        mysqli_query($conn,$sql)
   }
虽然事实上什么都没有改变?我猜$variable应该是$arr?值“$refno”、“$f_name”、“$arr”、“,”

试试这个

$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));
}

每次迭代都会覆盖$sql,因此最后一次是唯一执行的,只需将查询执行移到循环中即可。。并删除第二个,否则,它可能已被复制两次。即使是这样也不安全。好主意-做或不做。没有尝试。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。表示了解的语句。即使是这样也不安全!是的,你是对的,我们可以做很多事情。。这只是关于插入问题。但是,如果您在没有准备语句的情况下发布答案,那么使用mysqli_escape_字符串来避免sql注入是一种很好的做法。表示了解的语句。即使是这样也不安全@杰布兰查德:正确。。你的评论告诉OP这个事实。如果你在没有准备好的声明的情况下发布一个答案。我会在未来的答案中考虑你的建议。JayBlanchard@SudhanshuJain ... 这个评论不是我的,而是杰布兰查德的。。。你应该把你的评论贴给他。。因此,注释只适用于一个目的地,即“了解”的语句。即使是这样也不安全!如果你在没有准备好陈述的情况下发布了答案。