对于仅触发一次的循环,将不正确的值输入到mysql数据库中

时间:2016-07-05 00:21:22

标签: php mysql

首先,我知道在我的示例中有弃用的代码,我正在使用我之前设计的平台并且还没有完成更新所有使用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);

}

编辑:根据建议更新了代码。

1 个答案:

答案 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_rvar_dump输出您认为变量包含的内容。

在将驱动程序更新为可以处理参数化查询的内容时,至少也要使用mysql_real_escape