0

我在下面有一个代码,它通过查看在“ImageFile []”中输入的内容来查找 ImageId,然后我使用 INSERT VALUES 插入值(目前我正在使用 echo $questionsql)。但问题是当我回显它时该值是空白的。我也收到了 imageFile [] 的未定义索引通知。$插入问题 = 数组();

    $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>
4

1 回答 1

0

当您对 post 字段使用 PHP 数组语法时,[]不会出现在 $_POST 数组中。对于您在表单中命名的每个字段,语法将是$_POST['imageFile'][0], $_POST['imageFile'][1], etc...。imageFile[]

同样,我怀疑您的 implode() 稍后会产生无效的 SQL。它将进行查询:

INSERT INTO Question (ImageId)
VALUES ('value1''),(''value2''),etc...

您已经在前一行中用引号将值括起来,然后添加更多引号作为内爆的一部分,因此您最终会在查询字符串中得到一些不平衡的引号。

于 2012-04-05T03:55:20.937 回答