我有一个 HTML 表单,其中包含一个表格,其中每一行都是一个数据库条目,并且有自己的输入字段和按钮。我使用数组表示法(例如name="edit[<?php echo $entry['id']; ?>]"
)和条目的 id 作为键来确定在 PHP 中应该编辑/删除哪个条目。
这就是 HTML 表单和两个示例行:
<form class="form-inline" action="index.php" method="POST" name="foo_form">
...
<tr>
<td>14</td>
<td><input type="text" class="input" placeholder="fooooo" name="headline[14]" value="fooooo"/></td>
<td><textarea class="input-block-level" rows="2" name="text[14]">lorem ipsum123</textarea></td>
<td>
<input name="edit[14]" type="submit" class="btn" value="save changes"/>
<input name="delete[14]" type="submit" class="btn" value="delete"/>
</td>
</tr>
<tr>
<td>15</td>
<td><input type="text" class="input" placeholder="baaar" name="headline[15]" value="baaar"/></td>
<td><textarea class="input-block-level" rows="2" name="text[15]">lorem ipsum456</textarea></td>
<td>
<input name="edit[15]" type="submit" class="btn" value="save changes"/>
<input name="delete[15]" type="submit" class="btn" value="delete"/>
</td>
</tr>
...
</form>
假设我按下 id 为 15 的条目的删除按钮,那么这是var_dump($_POST)
我在家中的开发服务器(PHP 版本 5.3.10-1ubuntu3.8)和托管的 vServer(PHP 版本 5.3.2- 1ubuntu4.21):
array(3) {
["headline"]=>
array(2) {
[14]=>
string(6) "fooooo"
[15]=>
string(5) "baaar"
}
["text"]=>
array(2) {
[14]=>
string(14) "lorem ipsum123"
[15]=>
string(14) "lorem ipsum456"
}
["delete"]=>
array(1) {
[15]=>
string(6) "delete"
}
}
这就是我在必须运行脚本的共享网络空间(PHP 版本 5.3.27)上得到的。缺少正确的 id 作为数组键,我得到 0、1、...n 作为数组键:
array(3) {
["headline"]=>
array(2) {
[0]=>
string(6) "fooooo"
[1]=>
string(5) "baaar"
}
["text"]=>
array(2) {
[0]=>
string(14) "lorem ipsum123"
[1]=>
string(14) "lorem ipsum456"
}
["delete"]=>
array(1) {
[0]=>
string(6) "delete"
}
}
这些文件完全相同,HTML 表单确实包含正确的数组键。我用 firebug 检查了发送的 POST 请求,它也包含正确的键。必须有服务器端设置或禁用指定键并将其替换为顺序键的东西。希望有人知道解决方案。