将数组发送到数据库

时间:2013-11-18 01:21:46

标签: php mysql

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'。请有人帮我解决这个问题。

2 个答案:

答案 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注入攻击。