1

たとえば、[P、Q、R、S、T、U、V]と[A、B、C、D、E、F、G]の2つの配列リストを、AndroidからURLを介してphpに送信しています。更新すると、[P、Q、R、S、T、U、V]は[A、B、C、D、E、F、G]に置き換えられ、正しく更新されます。しかし、mysqlデータベースでは、最初の行を更新している間、つまりAは正しく更新され、2番目の行から更新ごとにBからGに更新され、最初は各行の先頭に余分なスペースがあります

   Before update  After update1    After2nd update       
        P            A               A
        Q             B                B
        R             C                C
        S             D                D
        T             E                E
        U             F                F
        V             G                G

このコードを試してみます

               <?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", "root");
             mysql_select_db("test");
             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]);

             mysql_query("UPDATE `test` SET `menuname` = '$new_name' WHERE menucode = '$old_name'")
    or die('Error' . mysql_error());
            echo "Updated";
              }
             ?>
4

2 に答える 2

0

変数を渡す場合は、変数をトリミングしてからクエリに渡します。お気に入り

$ name_new = Trim($ name);

トリム機能は、左のスペースと右のスペースを削除します。したがって、ltrimではなくtrimのみを選択することをお勧めします。ありがとう

于 2012-04-24T11:00:54.777 に答える
0
mysql_query("UPDATE `test` SET `menuname` = ltrim('$new_name') WHERE menucode = '$old_name'")
    or die('Error' . mysql_error());
于 2012-04-24T10:55:36.137 に答える