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

时间:2012-04-11 11:20:26

标签: php mysql

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

到目前为止尝试过 -

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

1 个答案:

答案 0 :(得分:0)

这是因为他们在db中只有一个旧名称,现在用新名称替换。如果你想用new更新所有行的值,请执行类似这样的操作

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

EDITED

在你的循环中

而不是使用新名称的密钥使用计数器

$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++;

}

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