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