Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组键/编辑数据库_Php_Arrays - Fatal编程技术网

php数组键/编辑数据库

php数组键/编辑数据库,php,arrays,Php,Arrays,我有一个包含多个输入的页面,名为-name='phonenumber[]。我正在将一个表单发送到另一个页面,我希望能够使用新的帖子信息编辑db。我应该如何编写代码,例如,我填写第三个输入,在发送表单后,只编辑表中的第三行。我试过这样做,但不起作用: if ($_POST['phonenumber'] || $_POST['phonetype']) { foreach($_POST['phonenumber'] as $k => $phonenumber) { $phon

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

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");
    }
}

这样,所有的电话号码都可以通过第三条输入信息进行编辑。我做错了什么?

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

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

DELETE FROM phone WHERE id_user=?

// for loop
INSERT INTO phone (phone_number, phone_type) VALUES (?, ?) WHERE id_user=?
或者,如果您的电话号码有自己的id,请在执行
更新时将其包含在
WHERE
语句中;您应该明确取消
限制


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

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

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

DELETE FROM phone WHERE id_user=?

// for loop
INSERT INTO phone (phone_number, phone_type) VALUES (?, ?) WHERE id_user=?
或者,如果您的电话号码有自己的id,请在执行
更新时将其包含在
WHERE
语句中;您应该明确取消
限制


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

看起来像你的问题之后,可以做两个解决方案

  • 如果电话号码是可单独识别的,如“电话号码”列,则发送该POST数据并通过该列进行更新

    mysql\u查询(“更新手机号码='$phonenumber',手机类型='$phonetype',其中id\u用户='$id'和手机id='$phone\u id')

  • 如果没有,则删除id_用户的所有电话号码,然后按POST重新插入数据


  • 在看起来像你的问题之后,可以做两个解决方案

  • 如果电话号码是可单独识别的,如“电话号码”列,则发送该POST数据并通过该列进行更新

    mysql\u查询(“更新手机号码='$phonenumber',手机类型='$phonetype',其中id\u用户='$id'和手机id='$phone\u id')

  • 如果没有,则删除id_用户的所有电话号码,然后按POST重新插入数据


  • 你能调试一下$k是什么吗?如果你想更新一行中的一列,你应该能够选择具有唯一标识符的行。如果你没有该标识符,jack的解决方案是最好的,删除并再次添加。您能调试$k是什么吗?如果您想更新行中的一列,您应该能够选择具有某个唯一标识符的行。如果您没有该标识符,jack的解决方案是最好的,请删除并再次添加。看起来第一个解决方案就是这个解决方案。谢谢然而,如何通过url传递两个id?我认为最好的方法是更改html字段名,就像这样
    看起来第一个解决方案就是这个。谢谢然而,我如何通过url传递两个id?我认为最好的方法是像这样更改html字段名
    谢谢,他们有自己的id,我只是忘了把它们放在WHERE子句中。谢谢,他们有自己的id,我只是忘了把它们放在WHERE子句中。