我在下面有一个代码,它通过查看'ImageFile []'中输入的内容来查找ImageId然后我使用INSERT VALUES来插入值(目前我正在使用echo $ questionsql)。但问题是,当我回显它时,该值保持空白。 另外我收到了imageFile []的未定义索引通知。 $ insertquestion = array();
$imagequery = "SELECT ImageId FROM Image WHERE (ImageFile = '". mysql_real_escape_string($_POST['imageFile'])."')";
$imagers = mysql_query($imagequery);
$imagerecord = mysql_fetch_array($imagers);
$imageid = $imagerecord['ImageId'];
$insertquestion[] = "'".
mysql_real_escape_string( $imageid ) ."'";
$questionsql = "INSERT INTO Question (ImageId)
VALUES (" . implode('), (', $insertquestion) . ")";
echo($questionsql);
我认为它为'imageFile []'回显空白值的原因以及它为什么声明'imageFile []'未定义是因为在下面的<form>
中,没有imageFile []。 imageFile []在javascript代码中,并附加到表单表中。
所以我想知道的是我怎样才能得到它所以我可以得到一个隐藏的输入,它将附加的ImageFile'[]'与表单代码相匹配,这样当我在php的下一页中发布imageFile []时代码是,我没有得到一个未定义的索引,我不会得到'imageFile []的空白值?
以下是javascript和表单代码:
<script>
function insertQuestion(form) {
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
var $image = $("<td class='image'></td>");
var $imagefile = $('<input />')
.attr({
type: 'file',
name: 'imageFile[]',
class: 'imageFile'
});
$tr.append($qid);
$tr.append($image);
$tbody.append($tr);
}
</script>
<form id="QandA" action="insertQuestion.php" method="post" >
<table id="qandatbl" align="center">
<thead>
<tr>
<th class="image">Image</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
答案 0 :(得分:0)
当您对帖子字段使用PHP数组语法时,[]
不会显示在$ _POST数组中。对于您在表单中命名为$_POST['imageFile'][0]
的每个字段,语法为$_POST['imageFile'][1]
,imageFile[]
等等。
同样,我怀疑你的implode()稍后会产生无效的SQL。它将进行查询:
INSERT INTO Question (ImageId)
VALUES ('value1''),(''value2''),etc...
你已经在上一行中用引号包围了这些值,然后在内爆中添加了更多的引号,所以你最终会在查询字符串中找到一些不平衡的引号。