2011-06-21 35 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); 

} 

我只需要更新的PromotionalTimeLine特定的行与$y电池作为其EventID。这会做到吗?

+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