MySQL语法错误

时间:2011-03-30 10:56:41

标签: php mysql

我有一个非常简单的mysql查询,通常在我的其他网站上运行良好,但这次我收到以下错误:

  

致命错误:您的错误   SQL语法;检查手册   对应于您的MySQL服务器   用于正确语法的版本   在第1行INSERT附近'where id = 1'附近   INTO成员(计划,活跃)价值观('3   天计划','Y'),其中id = 1

代码是:

$db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active') where id = $custom");

我正在使用mysql rainphp类。

我确信有一个简单的解决方案,但我是一个新手,只是无法弄明白:)

修改

大家好,

感谢您的回答!我现在觉得自己像个白痴,因为我不知道WHERE子句只适用于UPDATE。但这是有道理的!

再次感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

您无法同时插入和使用WHERE。这仅适用于UPDATE。

答案 1 :(得分:3)

如果您想要INSERT,请使用:

$db->query("INSERT INTO members (plan, active)
  VALUES ('".mysql_real_escape_string($plan)."',
    '".mysql_real_escape_string($active)."')");

WHERE子句在这里没用。

编辑:您想要INSERT还是UPDATE

如果UPDATE

$db->query("UPDATE members SET
    plan = '".mysql_real_escape_string($plan)."',
    active = '".mysql_real_escape_string($active)."'
  WHERE id=".intval($id));

答案 2 :(得分:1)

您不应在插入查询中使用where子句。


删除where子句,因此您的代码如下所示:

$db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active')");


不知道你为什么把这个where条款放在那里;但是,如果您想修改某些数据,则需要使用update查询 - 而不是insert个。

例如:

update members
set plan = '$plan',
    active = '$active'
where id = $custom


作为旁注:您需要确保使用您的类PDO::quote提供的功能/方法,例如,如果使用PDO)来逃避您的数据。

答案 3 :(得分:0)

您不需要在insert语句中提供where子句。