0

我试图从我的数据库中获取最后插入的 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,但显然它不是数字,因此下一个查询不会触发!

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

更新

好的,我使用 TRIM() 解决了这个问题,如下所示:

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

这让我很高兴,因为它可以工作,但让我很难过知道这样一个简单的获取数字 ID 的过程失败了。向 SQL 询问整数 ID 怎么会产生空格?DB字段中显然没有空格,我的代码中也没有空格。如果有人有任何想法,我仍然希望得到答案?

4

1 回答 1

0

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

于 2012-08-07T01:01:25.227 回答