我通过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";
}
?>
答案 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++;
}
因为密钥可能不适用于新名称数组。