不使用mysql_insert_id()获取最后插入记录的id

时间:2010-02-16 07:26:39

标签: php mysql

$sql =  
    'INSERT INTO customer 
(first_name, 
last_name, 
email, 
password, 
date_created, 
dob, 
gender, 
customer_type) 
VALUES(:first_name, 
:last_name, 
:email,  
:password,  
:date_created,  
:dob,  
:gender,  
:customer_type)' . ' SELECT LAST_INSERT_ID()' ; 

有谁能告诉我语法是否正确?我在使用mysql_insert_id时遇到问题,这就是我使用SELECT LAST_INSERT_ID()

的原因

错误消息: mysql_insert_id()[function.mysql-insert-id]:拒绝访问用户'ODBC'@'localhost'

4 个答案:

答案 0 :(得分:1)

SELECT在查询的上下文中没有意义。为它执行单独的查询。

答案 1 :(得分:1)

不,没有任何意义。如果您真的想要选择last_insert_id,则应该在单独的(实际上通常是下一个)语句中进行。

但是没有必要这样做,因为你可以在API级别这样做。只需为您的API调用适当的函数即可获取最后一个插入ID。没有必要单独声明。

答案 2 :(得分:1)

首先,你需要使用分号来分隔两个查询,其次mysql_query不允许你同时执行两个查询,第三,如果你有很多并发用户,“SELECT LAST_INSERT_ID”可能会出现问题(可能会发生冲突) )。你对mysql_insert_id有什么问题?

答案 3 :(得分:1)

如果在两个查询之间添加结束;,它将起作用(至少MySQL会接受它,我不知道PHP是否会抱怨)。但是,如上所述,它不是很好的代码,如果你把它分开,那将是一个竞争条件。用mysql_insert_id()计算你的扭结并使用它为它设计的。