SELECT LAST_INSERT_ID - 不生成数值

问题描述:

我试图从我的数据库中获取最后插入的ID以用于另一个查询,但是...当我检查它是否是数值时,它失败!SELECT LAST_INSERT_ID - 不生成数值

// my big insert query goes here // 

Set rs = conn.Execute("SELECT LAST_INSERT_ID();") 
member_id = rs(0) 
rs.Close : Set rs = Nothing 

If member_id <> "" AND IsNumeric(member_id) Then 
    conn.Execute(" INSERT INTO members_reputation (member_id, awarded_for, awarded_when, awarded_what) " _ 
    & "VALUES ("&member_id&", 'Created an account', Now(), 1); ") 
Else 
    Response.Write member_id //testing 
    Response.End // testing 
End If 

正如你所看到的,如果则IsNumeric条件不满足,我写了member_id屏幕(仅用于测试),成功地显示正确的ID,但显然,这不是数值,那么下一个查询不开火!

这是为什么?围绕它的最佳解决方案是什么?

UPDATE

好吧,我通过使用TRIM(),这样解决了这个问题:

If Trim(member_id) <> "" AND IsNumeric(Trim(member_id)) Then 

这让我很高兴,因为它的工作原理,但让我伤心知道这样一个简单的过程得到一个数字ID失败。如何向SQL询问一个整数ID,产生一个空格?数据库字段中显然没有空格,我的代码中也没有空格。如果任何人有任何想法,我仍然想回答这个问题?

+0

您确定您的插入成功吗? – 2012-08-07 01:05:11

+0

@MichaelMior:是的,正如我所说的,当我打印id到屏幕上显示正确的值时,它只是不是数字 – TheCarver 2012-08-07 01:12:35

+0

抱歉,抱歉。错过了那一个。 – 2012-08-07 01:41:30

mysql_insert_id是获取在最后一个查询中生成的ID。至于你的情况,在mysql_insert_id之前没有查询。您可以执行以返回MAX(member_id)。

+0

啊,前面有一个插入查询。我没有把它放进去,因为它太大了。我应该把这个放在我的问题中,对不起。 – TheCarver 2012-08-07 01:02:37

+0

member_id是一个自动递增字段吗? – sel 2012-08-07 01:06:04

+0

是的,它是一个auto-inc字段 – TheCarver 2012-08-07 01:11:38