1

我有一页有多个名为 - name='phonenumber[] 的输入。我正在将表单发送到另一个页面,并且我希望能够使用新的帖子信息编辑数据库。我应该如何编写代码,例如,我填写第三个输入并在发送表单后,只编辑表中的第三行。我试过这样但它不起作用:

if ($_POST['phonenumber'] || $_POST['phonetype'])
{ 
    foreach($_POST['phonenumber'] as $k => $phonenumber) { 
    $phonetype = $_POST['phonetype'][$k];
    $n = $k+1;
mysql_query("UPDATE phone SET phone_number='$phonenumber', phone_type='$phonetype' WHERE id_user='$id' LIMIT $n");
    }
}

这样,所有电话号码都可以使用第三个输入 POST 发送的信息进行编辑。我究竟做错了什么?

4

2 回答 2

1

这是因为您的电话号码无法单独识别(我的猜测);在每个循环中,您都使用下一个值更新 N 行,最后所有条目都将具有最后一个值。

相反,删除所有电话号码并重新插入通常更容易。

DELETE FROM phone WHERE id_user=?

// for loop
INSERT INTO phone (phone_number, phone_type) VALUES (?, ?) WHERE id_user=?

或者,如果您的电话号码有自己的 id,请在执行;WHERE时将其包含在语句中。UPDATE你绝对应该删除LIMIT.

最后,查看准备好的语句(使用 pdo 或 mysqli);您当前的代码容易受到 sql 注入攻击!

于 2013-02-18T09:51:10.083 回答
0

看起来像您的问题后,可以完成两个解决方案

  1. 如果电话号码可以通过 phone_id 列单独识别,则通过此发送该 POST DATA 和更新。

    mysql_query("UPDATE phone SET phone_number='$phonenumber', phone_type='$phonetype' WHERE id_user='$id' AND phone_id = '$phone_id' ");

  2. 如果没有,则删除 id_user 存在的所有电话号码,然后通过 POST Data 重新插入。

于 2013-02-18T09:55:53.143 回答