首先,我知道在我的示例中有弃用的代码,我正在使用我之前设计的平台并且还没有完成更新所有使用mysqli的代码,所以我&m; m对现有平台进行一些小修改。
所以我有一个表格,根据在不同表格中输入的类别创建输入,表格输出正确,但为每个存在的类别重复相同的名称(点和猫)。
根据另一篇文章(How to insert the dynamic table row data into database at once),可以使用for循环完成将此数据插入到我的表中,如我的示例所示。
我遇到的问题是它只触发一次,尽管它创建的阵列应该有4个输入。此外,正在发送到表列的数据" cat_id"是" 3"它可以是它使用的cat_id的第一个数字,也可以是最后一个数组迭代[0],[1],[2],[3]。
这是我的第一个问题,所以如果没有提供所需的详细信息,我很抱歉,如果需要其他任何内容,我很乐意更新。
$cat_id = $_POST['cat'];
$points = $_POST['points'];
$count = count($cat_id);
for ($i = 0; $i < $count; $i++) {
$sql = "INSERT INTO scoring (cat_id, points) VALUES ('$cat_id[$i]','$points[$i]')";
$query = mysql_query($sql);
}
编辑:根据建议更新了代码。
答案 0 :(得分:2)
您链接的问题/答案不正确。默认情况下,数组不是动态构建的:
要将您的
<form>
结果作为数组发送到PHP脚本,请将<input>
,<select>
或<textarea>
元素命名为:<input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" />
http://php.net/manual/en/faq.html.php#faq.html.arrays
所以我认为你现在有
<input name="cat">
<input name="cat">
只会作为一个cat
元素处理。这会导致你的1次迭代。
尝试:
<input name="cat[]">
每个字段。要在将来对此进行调试,请使用print_r
或var_dump
输出您认为变量包含的内容。
在将驱动程序更新为可以处理参数化查询的内容时,至少也要使用mysql_real_escape
。