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());
答案 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());