2013-09-29 156 views
-3

我试图让用户在图像中插入主题。我知道我不能将WHERE子句与INSERT INTO语句结合使用,并且我知道我应该使用SELECT。我对mysql非常陌生,我不明白我试图在谷歌上搜索的结果。所以,我需要一个更加明确的答案;)在INSERT INTO语句中使用WHERE

$classed = mysql_query("INSERT INTO images (subject) VALUES ('$_POST[subject]') WHERE image_id='$_POST[id]'"); 
+1

'INSERT'是创建新行,'WHERE'是寻找现有行。目前还不清楚你想用这个组合来做什么。 – Barmar

+0

千万不要在数据库查询中使用未经过滤的用户输入(SQL注入危险!) – TheWolf

+0

您是否想要更新现有行? (恰当命名)命令是“UPDATE”。 – Ryan

回答

1

不能在现有行使用INSERT,尝试UPDATE的SQL将会像

UPDATE images SET subject = '...' WHERE id=x; 
+0

这就是我要找的。这个对我有用。正如我所说,我对Mysql非常陌生。学了很多,谢谢。 –

+0

考虑接受echo_Me答案,而不是更好,更完整,包含php代码并以适当的方式处理用户输入。 –

3
  1. 不能在使用WHEREINSERT声明。如果想要更新现有行,请考虑尝试UPDATE;如果没有WHERE,则尝试使用INSERT来插入新行。

  2. 请勿使用mysql_query函数,因为它已被弃用。请尝试使用PDOmysqli_query

  3. 不要有史以来在查询中使用未经过滤的输入。

2
  • 如果你已经有image_id值,那么你应该UPDATE你的表中没有INSERT

  • 你应该在将变量插入到表中之前将其转义。通过 mysql_real_escape_string()

试试这个:

$subject = mysql_real_escape_string($_POST['subject']) ; 
$id  =mysql_real_escape_string($_POST['id']) ; 
$classed = mysql_query("UPDATE images 
         SET subject = '".$subject."' 
         WHERE image_id='".$id."' ");