2012-08-07 66 views
0

我試圖從我的數據庫中獲取最後插入的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

回答

0

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