php中更新数组列表查询时出错

php中更新数组列表查询时出错,php,mysql,Php,Mysql,我通过url将2个arraylist从android发送到php。 Mysql包含两列的测试表menuimage和menuname。我只想更新菜单名,但它只更新mysql数据库中的第一行菜单名 到目前为止已经试过了- <?php $old_menu_names=explode(',',preg_replace('/^.*\[(.*)\].*$/','$1',trim($_POST['menuname'], '[]'))); $new_menu_names=explode

我通过url将2个arraylist从android发送到php。 Mysql包含两列的测试表menuimage和menuname。我只想更新菜单名,但它只更新mysql数据库中的第一行菜单名

到目前为止已经试过了-

          <?php
$old_menu_names=explode(',',preg_replace('/^.*\[(.*)\].*$/','$1',trim($_POST['menuname'], '[]')));
$new_menu_names=explode(',',preg_replace('/^.*\[(.*)\].*$/','$1',trim($_POST['editmainmenu'], '[]')));
mysql_connect("localhost", "root", "MobixMySQL");
mysql_select_db("cozydine");
foreach ($old_menu_names as $key => $old_name) {
    $new_name = mysql_real_escape_string($new_menu_names[$key]);
    $old_name  = mysql_real_escape_string($old_menu_names[$key]);
    echo $new_name;
    mysql_query("UPDATE `mainmenu` SET `menuname` = '$new_name' WHERE menuname = '$old_name'")
    or die('Error' . mysql_error());
    echo "Updated";
   }
 ?>

这是因为他们的数据库中只有一个旧名称,现在被新名称替换。如果要使用new更新行的所有值,请执行以下操作

"UPDATE `mainmenu` SET `menuname` = '$new_name' WHERE menuname IN ($unexploded_old_menu_names)"
编辑

在循环中使用计数器,而不是使用键作为新名称

$i = 0;
foreach ($old_menu_names as $key => $old_name)
{
$new_name = mysql_real_escape_string($new_menu_names[$i]);
$old_name  = mysql_real_escape_string($old_menu_names[$key]);
echo $new_name;
mysql_query("UPDATE `mainmenu` SET `menuname` = '$new_name' WHERE menuname = '$old_name'")
or die('Error' . mysql_error());
echo "Updated";
$i++;
}


因为键可能不适用于新名称数组。

我将更新查询放在这里,它们显示如下错误您的SQL语法有错误;检查与MySQL服务器版本对应的手册,了解第1行附近要使用的正确语法。请告诉我如何解决为什么我们使用$Unexplode\u old\u menu\u在where条件下命名此变量。请告诉我如何解决上述错误。这意味着,如果有3项我想用1个名称更改,我将这样做更新主菜单集菜单名=“$new_name”,其中“a”、“b”、“c”中的菜单名将替换为新名称echo$new_name;它打印所有编辑的值,但只更新了第一个值echo$new\u name;表示它打印了新值,但只更新第一行,其余行未更新请参见