Hiii ...我可以从$ _POST ['C']获取一个数组到我的PHP文件。我需要将它发送到数据库。在这里,我发布了我尝试过的内容。
<?
if(!empty($_POST['G'])){
for($i=0;$i<sizeof($_POST['C']);$i++){
var_dump($_POST['C']);
$Query="INSERT INTO Questions(Questions_ID,Question_Name) VALUES($i+1,'$_POST[C][$i]')";
if(!mysqli_query($con,$Query)){
die("<script>alert( \"Error: ". mysqli_error($con)."\");window.location.href='FormCreationTrial.php';</script>");
} }
}
?>
这是数组的var_dump。 array(3){[0] =&gt; string(1)“A”[1] =&gt; string(5)“Male2”[2] =&gt; string(7)“Female2”}注意:第19行的C:\ xampp \ htdocs \ PHIS \ FinalSubmissionOfTheFormPHP.php中的数组到字符串转换。第19行是我编写查询的地方。
当我试图逐个发送数组时,它会给出一个错误,例如'Duplicate entry'Array [0]',用于键'Question_Name_UNIQUE'。请有人帮我解决这个问题。
答案 0 :(得分:1)
首先,您的 for 语句应该是类似的(最有可能解决您的问题):
for($i = 0; $i < sizeof($_POST['C']) - 1; $i++) {
第二件事,你不要将“echo”与“var_dump”一起使用,单独使用“var_dump”,所以你的var_dump行应该是这样的:
var_dump($_POST['C']);
希望这有帮助
答案 1 :(得分:1)
$size = sizeof($_POST['C']) - 1;
for($i = 0; $i < $size; $i++) {
性能更好,因此循环在每次迭代时都不会调用sizeOf
$Query="INSERT INTO Questions(Questions_ID,Question_Name) VALUES(".($i+1).", '".$_POST[C][$i]."')";
此外,您似乎没有正确生成您的id字段,这意味着您将获得重复的错误。在表结构中设置自动生成的id或从表中获取最新的id并从那里开始递增。您也可以创建一个触发器来执行此操作,但这对您来说可能有点难度。
请注意,您的代码很容易受到SQL注入攻击。