0

我通过 url 从 android 向 php 发送 2 个数组列表。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";
   }
 ?>
4

1 回答 1

0

那是因为他们在数据库中只有一个旧名称现在被新名称替换。如果您想用 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++;

}

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

于 2012-04-11T11:56:33.900 回答