2012-04-11 5 views
0

私は2人のarraylistをアンドロイドからphpにURL経由で送ります。 Mysqlには、メニューイメージmenumameという2つのカラムを持つテストテーブルが含まれています。PHPで更新配列リストのクエリでエラーが発生しました

はそう遠

  <?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

ザッツので試してみました私は、唯一のメニュー名を更新したいが、それはmysqlデータベースにMENUNAMEの最初の行だけを更新している彼らの今に置き換えられデシベルで唯一の古い名前で新しい名前。あなたが新しいとすべての行の値を更新する場合は代わりに使用カウンタ

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

}

を新しい名前のキーを使用してのあなたのループで

を編集しました。この

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

ような何かを行います

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

+0

私はこのエラーのように表示されるUU更新クエリを入力しました。エラーSQL構文にエラーがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックしてください。右側の構文は、 ')'を1行目で使用してください。 – Vinoth

+0

を解決する方法を教えてください。なぜなら、この変数を$ unexploded_old_menu_namesで使用する理由は何ですか?上記のエラー – Vinoth

+0

これは、3つの項目を1つの名前で変更したいと仮定した場合、これを行うことを意味します。UPDATE 'mainmenu' SET' menuname' = '$ new_name' WHERE menuname IN( 'a'、 'b' 'c')abcを新しい名前に置き換えます –