0

私はURLを介してAndroidからphpに2つの配列リストを送信しています。Mysqlには、menuimage、menunameの2つの列を持つテストテーブルが含まれています。メニュー名のみを更新したいのですが、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";
   }
 ?>
4

1 に答える 1

0

これは、データベース内の1つの古い名前だけが新しい名前に置き換えられているためです。行のすべての値を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++;

}

新しい名前の配列に対してキーが機能していない可能性があるためです。

于 2012-04-11T11:56:33.900 に答える