Php 通过$\u POST data更新数据库行,键作为行的id

Php 通过$\u POST data更新数据库行,键作为行的id,php,mysql,Php,Mysql,我从用户那里收到了以下$u POST数据 url[3] = "beheer" name[3] = "knowledge" parent_id[3] = "0" url[4] = "asd" name[4] = "adasdas" parent_id[4] = "0" url[5] = "asdasd" name[5] = "asdsadasd" parent_id[5] = "0" 其中,键是每个数据的id。 我想循环遍历所有数据并更新行 这将执行,例如: mysql_query("UPD

我从用户那里收到了以下$u POST数据

url[3] = "beheer"
name[3] = "knowledge"
parent_id[3] = "0"

url[4] = "asd"
name[4] = "adasdas"
parent_id[4] = "0"

url[5] = "asdasd"
name[5] = "asdsadasd"
parent_id[5] = "0"
其中,键是每个数据的id。 我想循环遍历所有数据并更新行

这将执行,例如:

mysql_query("UPDATE table SET url = 'beheer', name = 'knowledge', parent_id='0' WHERE id = 3");
我如何解决这个问题?

您可以这样做:

   foreach ($url as $key => $value)
    mysql_query("UPDATE table SET url = '$value', name = '$name[$key]', parent_id='$parent_id[$key]' WHERE id = '$key'");

在我看来,解决这个问题最简单的方法是使用关联数组。因此,您有一个名为$values的变量,然后将您的名称添加到该变量中,如下所示:

$values[0]['url']
$values[0]['name']
$values[0]['parent_id']

$values[1]['url']
$values[1]['name']
$values[1]['parent_id']

$values[2]['url']
$values[2]['name']
$values[2]['parent_id']
这将使您能够使用类似这样的foreach循环在数组上迭代

foreach($values AS $value) {
  $url = $value['url'];
  $name = $value['name'];
  $parent_id = $value['parent_id'];

  $query = "INSERT INTO table (url,name,parent_id) VALUES ('$url','$name','$parent_id')";
}

$sql->query($query);

这当然是一个简单的例子,但它应该会有所帮助。

那么这个查询是否没有按照您期望的方式工作?索引(url、名称、父id)是否总是相同的,或者它是否应该适应给定的任何索引?@ChrisWillard,查询示例就是我想从程序逻辑中得到的查询