Mysql和使用函数last insert ID时出现问题

Mysql和使用函数last insert ID时出现问题,mysql,coldfusion,railo,Mysql,Coldfusion,Railo,当我运行我的查询时,我得到了这个错误 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第3行“选择最后一个\u插入\u id作为产品id”附近要使用的正确语法 国家错误代码1064 查询错误字符串: insert into products (systemname, systemversion, created_date) values ('web andrea', '', now()); select last_insert_id() as productid; 数据库名

当我运行我的查询时,我得到了这个错误

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第3行“选择最后一个\u插入\u id作为产品id”附近要使用的正确语法

国家错误代码1064

查询错误字符串:

insert into products (systemname, systemversion, created_date) 
values ('web andrea', '', now()); select last_insert_id() as productid;
数据库名称字符串MySQL

数据库版本字符串5.6.10-log

DriverName字符串MySQL AB JDBC驱动程序

insert into products (systemname, systemversion, created_date) values ('web andrea', '', now()); select last_insert_id() as productid;
我希望插入数据,但在这里失败了

提前谢谢

Andrea

您运行的不是一个查询,而是两个查询:插入,然后选择

在应用程序中,需要进行两个不同的查询调用,一个用于插入,另一个用于获取最后插入的id


请注意,您的数据库驱动程序可能有一个内置函数,用于返回PHP中最后插入的等效id。

除了@GMB的注释外,它出错的原因是出于安全原因,默认情况下不允许使用多个语句-以防sql注入。它们可以通过启用。但是,请确保所有查询都使用cfqueryparam来防止sql注入

话虽如此,您不需要最后一个插入id或多个语句。相反,使用。插入后,CF用新记录id填充变量yourResultName.GENERATEDKEY

<cfquery result="yourResultName" datasource="yourDSN">
   insert into products (systemname, systemversion, created_date) 
   values (
      <cfqueryparam value="web andrea" cfsqltype="cf_sql_varchar">
      , <cfqueryparam value="" cfsqltype="cf_sql_varchar">
      , now()
   )
</cfquery>

<!--- DEMO --->
<cfoutput>
   New ID (yourResultName.GENERATEDKEY) = #yourResultName.GENERATEDKEY#
</cfoutput>

还应该注意的是,您不一定希望运行背靠背查询。当您选择最后一个插入的id时,另一个会话可能已经插入了一个新的id,这就是您选择的id。您希望获取在执行插入的同一查询会话期间插入的id。