2012-04-29 6 views
5

mysqlの問い合わせの後に最後に挿入されたIDを取得するのが最善の解決策であると思いますか?PHPを使ってmysqlに最後に挿入されたIDを見つける最良の方法

私は次の解決策を発見した:

<?php 
function get_current_insert_id($table) 
{ 
    $q = "SELECT LAST_INSERT_ID() FROM $table"; 
    return mysql_num_rows(mysql_query($q)) + 1; 
} 
?> 

あるいはmysql_insert_id PHPの関数を使用すると、どうやらこの関数はBIGINTとうまく動作しません(私はIDフィールドに使用しています厥)とたくさんがある場合連続するSQL問合せの信頼性が低い可能性があります。

誰かがこのタスクを達成するための信頼性の高い高速ソリューションを提供できますか?

+1

LAST_INSERT_ID()を無効に使用しています。あなたは通常の列のようにそれを取得します。 mysql_num_rows()は常にそのクエリのものです。 – Corbin

+0

私はphp.netの関数とポスターが、この関数が 'mysql_insert_id'によって引き起こされるすべての問題を解決すると主張しました! –

+1

-1このマニュアルを読むのではなく、質問をするために –

答えて

10
+0

これは私の質問です。連続したSQL接続が多数あり、多くのSQLクエリーが実行されている場合、どのように反応しますか? –

+1

@AhouraGhotbi:['LAST_INSERT_ID()'](http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id)は接続ごとです。 – eggyal

+0

ドキュメントへのリンクは無作為なフォーラム投稿(http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id)より優れていると思います。しかし、それは正しいですし、mysql_pconnectノートは良いメモです。 – Corbin

4

は、LAST_INSERT_ID()は、最初の挿入された行のために生成された値を返します。その理由は、他のサーバに対して同じINSERT文を簡単に再現できるようにするためです。

+3

ドキュメントから何かをコピー/ペーストする場合は、引用する必要があります。 – Corbin

関連する問題