Php MySQL语法错误

Php MySQL语法错误,php,mysql,Php,Mysql,我有一个非常简单的mysql查询,它通常在我的其他站点上运行良好,但这次我遇到以下错误: 致命错误:您的数据库中有一个错误 SQL语法;检查手册 对应于您的MySQL服务器 要使用的正确语法的版本 在第1行插入的“其中id=1”附近 进入成员(计划、活动)值('3 天数计划','Y'),其中id=1 代码是: $db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active') where id = $custo

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

致命错误:您的数据库中有一个错误 SQL语法;检查手册 对应于您的MySQL服务器 要使用的正确语法的版本 在第1行插入的“其中id=1”附近 进入成员(计划、活动)值('3 天数计划','Y'),其中id=1

代码是:

$db->query("INSERT INTO members (plan, active) VALUES ('$plan','$active') where id = $custom");
我正在使用mysql rainphp类

我相信有一个简单的解决方案,但我是一个新手,就是想不出来:)

编辑:

大家好

谢谢你的回答!我现在觉得自己是个傻瓜,因为我不知道WHERE子句只用于更新。但这是有道理的


再次感谢你的帮助

如果要插入,请使用:

$db->query("INSERT INTO members (plan, active)
  VALUES ('".mysql_real_escape_string($plan)."',
    '".mysql_real_escape_string($active)."')");
WHERE
子句在这里是无用的

编辑:是否要执行
插入
更新

如果
更新

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

不能同时插入和使用WHERE。这只适用于更新。

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

您不应该在insert查询中使用where子句


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

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

不知道你为什么把这个
where
子句放在那里;但是,如果您想修改某些数据,则需要使用
更新
查询
——而不是
插入
查询

例如:

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


作为旁注:您需要确保转义数据——使用类提供的函数/方法(例如,如果使用PDO)。

insert
语句上不能有
where
子句-您想做什么?Hi Pascal,我正在使用一个小函数(函数安全($value){htmlentities($value,ENT_引号,'utf-8');返回$value;})确保在传递到mysql之前检查所有条目。这应该可以做到,对吗?否:htmlentities为HTML输出转义数据;不是为SQL输出转义数据;;我应该添加htmlentities返回修改后的字符串,在这里,您没有使用其返回值——因此,基本上,您的函数什么都不做。哦,好的。感谢您提供的信息。我会的更改它,并确保使用mysql\u real\u escape\u字符串转义所有数据。我希望这样做。mysql\u real\u escape\u字符串可以正常工作——如果您已经使用mysql函数与数据库通信。