0

DB から最後に挿入された 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 に答える