多次上传未保存到数据库

时间:2011-06-15 14:47:56

标签: php mysql

var a=0;
function _add_more() {
    var txt = "<br><input type=\"file\" name=\"item_file[]\"><br><input type=\"text\" name=\"text"+a+"\">";
    document.getElementById("dvFile").innerHTML += txt;
    alert(a);
    a=a+1;
}

我正在使用多个文件上传和多个标题。我无法在数据库中保存标题文本。你能否告诉我正确的语法$_POST["text"],我应该把它放在哪里。

$insert=mysql_query("insert into image_upload set title='".$_POST["text"]."', image='".$filen."'") or die(mysql_error());

3 个答案:

答案 0 :(得分:1)

$_POST["text"]未定义,字段名称为$_POST["text0"]$_POST["text1"]$_POST["text2"],...每个输入一个。

您应该将a添加到隐藏字段,然后您就会知道您拥有的输入数量。

答案 1 :(得分:1)

John Boker所说的是真的 但是你需要循环遍历它们以将它们插入到数据库中 一种简单的方法是制作name=\"text"+a+"\"name=\"text[]\"(就像您的文件上传元素一样),
那么你就会有一系列的头衔。

所以在PHP中:
foreach($_POST["text"] as $title){ {
{1}} {
{1}}

另外,为什么不在JavaScript中使用 $insert=mysql_query("insert into image_upload set title='".$title."', image='".$filen."'") or die(mysql_error());而不是转发 }

在循环浏览上传的文件时,您可能只是循环浏览标题。

答案 2 :(得分:0)

您可以使用相同的策略命名您的标题字段,就像您为文件上传字段所做的那样:

var txt = "<br><input type=\"file\" name=\"item_file[]\"><br><input type=\"text\" name=\"text[]"\">";

注意我将它们全部命名为text[]。现在在PHP中我有变量$_POST['text'],它本身就是一个包含所有标题的数组。

要访问文件以及PHP中的标题,您可以这样做:

for($i=0; $i<length($_FILES['item_file']); $i++) {
    print $_FILES['item_file'][$i]['name'] +"<br>";
    print $_POST['text'][$i] + "<br>";
}

此外,我有义务通知您,在没有正确验证输入的情况下执行mysql查询肯定会让您入侵。请考虑使用:

$insert=mysql_query("insert into image_upload set title='". mysql_real_escape_string($_POST["text"]) ."', image='". mysql_real_escape_string($filen) ."'") or die(mysql_error());