2011-06-21 13 views
0

愚かなタイトル私は知っています。私はこれを持っている:これはSQL情報を更新しますか?

$x = array_keys($_POST); 
foreach($x as $y) { 

$query = "UPDATE * FROM events (PromotionalTimeLine = "$_POST[$y]" WHERE EventID='$y'"; 
    $result = mysql_query($query); 
    print_r($result); 

} 

私は彼らのEventIDとして$yで特定の行のためにのみPromotionalTimeLineセルを更新する必要があります。これはそうするのだろうか?

+0

ランダムなSQLキーワードを使用してその質問を書いたことがありますか? – zerkms

+2

はい、まったくランダムです...助けてくれてありがとう。 – Joel

答えて

4

いいえ、あなたは更新クエリでmysql構文エラーがあります。

$query = "UPDATE events 
      SET PromotionalTimeLine = '".mysql_real_escape_string($_POST[$y])."' 
      WHERE EventID='".$y."'"; 
+0

最後の$ yはフィルタリングされませんが、とにかく+1されます。 – stefgosselin

+0

ありがとうございます。私は助けに感謝します。 – Joel

0

文字列の連結にはいくつかの問題があります。それは

$query = "UPDATE events SET PromotionalTimeLine = '" .$_POST[$y]. "' WHERE EventID='".$y."'"; 

する必要があり、また、あなたは私がCOSEは、SQLインジェクションや同様の攻撃に対して脆弱ではないそうすることをアドバイスしたいあなたの入力し、消毒していません。ここでは、サニタイズ入力の詳細な投稿です - What's the best method for sanitizing user input with PHP?

+0

-1不注意なクエリを投稿しました。 – Daric

+0

@Daricこのクエリにはどのようなエラーがありますか?あなたはmysql_real_escape_string関数について何を言っていますか? – Bajrang

+0

@ J.J。彼は私が答えを編集していたときにコメントを投稿しました。私は投稿後にエラーが発生しなかったことを認識しました。 – Balanivash

-1

ちなみに、他の回答は私のために働いていません。これはうまくいきました:

mysql_query("UPDATE events 
      SET PromotionalTimeLine = '$_POST[$y]' 
      WHERE EventID='$y' "); 
+1

... SQLインジェクションのための大きな穴を開けます。 – konsolenfreddy

+0

私はエスケープについては言及していない、私は上記のすべての答えのフォーマットについて話している私のために動作しませんでした。私はなぜこれについて知っているのか分かりませんが、彼らはうまくいかず、これはしません。 – Joel