mysql_insert_id() のスコープは MySQL 接続です。ではなくuser + password
、現在のスクリプトの実際の接続です。(MySQL 接続は mysql_insert_id のパラメーターにもなり得ることに注意してください)
MySQL 接続を閉じて再度開くと、mysql_insert_id() は前の接続で挿入された ID の ID を返しません。
追加直後に ID が挿入されたが、別のスクリプト実行 (つまり、別の接続) によって mysql_insert_id() は ID を返します。実際に作成された後ではなく、別の接続で作成された ID ではありません。
例 :
$c1 = mysql_connect($srv, $usr, $pwd);
$c2 = mysql_connect($srv, $usr, $pwd);
$sql = "INSERT INTO table1 (col1, col2) VALUES('x', 'y') "
mysql_query($sql, $c1); // first insert
mysql_query($sql, $c2); // second insert
$id1 = mysql_insert_id($c1);
$id2 = mysql_insert_id($c2);
$id1 は最初に挿入される ID になり、$id2 は後に挿入される ID になります。