2012-02-20 19 views
-1

私はMySQLデータベースを更新しようとしています。 これは私が書いたものです:MySQLデータベースを更新できません

$mysql_link = mysql_connect('servername','username','password'); 
mysql_select_db('bambi4couk_599731_db3', $mysql_link); 

$serializedTemplates = serialize($_SESSION['data']['user']['templates']); 
mysql_query("UPDATE rmusers SET templates='$serializedTemplates' WHERE email='" . $_SESSION['data']['user']['details']['email'] . "'"); 

私はそれを動作させるために、この問題を解決するにはどうすればよいですか?

EDIT:

私はエラーを取得していないのですが、関数がデータベースを更新していないと、それはfalseを返しています。

$ _SESSION ['data'] ['user'] ['details'] ['email']は、使用された電子メールアドレス(データベースに表示されます)を返します。

シリアル化された配列は長すぎてここに貼り付けることはできませんが、問題はありません。文字列なので、どのように間違っているのか分かりません。

EDIT2:それは私の仮定が間違っていた判明したように

、シリアライズされた配列は、最初にエスケープする必要がありました。

+1

エラーは何ですか?クエリそのものが音に見えるので、いくつかの情報が必要になります。 '$ serialiszedTemplates'と' $ _SESSION ['data'] ['user'] ['details'] ['email'] 'のダンプも便利です。 (今度はログインの詳細がもっと良くなる;)) –

+0

ありがとう(むしろ恥ずかしい)。私は関数が何もしておらず、falseを返すというエラーを受け取っていません。 $ _SESSION ['data'] ['user'] ['details'] ['email']は使用された電子メールアドレスを返します(データベースに表示されます)、シリアル化された配列は長すぎてここに貼り付けることはできませんが、とにかくそれは文字列ですので、どうやって間違っているのか分かりません。 –

+0

['email']の値を使用して手動でアップデートしようとしましたか?それは、それがそうでなければ少なくとも*何か*を更新しているか、またはエラーを起こしているように、それが誤りのWHERE基準であるかのように聞こえる。あなたの助けを借りて、エラーが押されている場合のために、bumperboxによって詳述されているエラーハンドラを追加する価値があります。 –

答えて

2

エラーメッセージが何であるかを教えて、私たちは、私はあなたがエスケープされていない期待の推測では、あなたに

を助けることができる次に、この

mysql_query("UPDATE rmusers SET templates='$serializedTemplates' WHERE email='" . $_SESSION['data']['user']['details']['email'] . "'") or die (mysql_error()); 

同様

or die (mysql_error()); 

を追加します。値

mysql_real_escape_string()を参照してください。

http://www.php.net/manual/en/function.mysql-real-escape-string.php

+0

ビンゴです。ご協力ありがとうございました。私は貧しい教育のためにw3スクールを責めます。 –

関連する問題