Hier is het antwoord, zoals voorgesteld door Alexandre:
wanneer u de id=LAST_INSERT_ID(id) gebruikt, wordt de waarde van mysql_insert_id =de bijgewerkte ID ingesteld, dus uw uiteindelijke code zou er als volgt uit moeten zien:
<?
$query = mysql_query("
INSERT INTO table (column1, column2, column3)
VALUES (value1, value2, value3)
ON DUPLICATE KEY UPDATE
column1 = value1,
column2 = value2,
column3 = value3,
id=LAST_INSERT_ID(id)
");
$my_id = mysql_insert_id();
Dit geeft de juiste waarde voor $my_id, ongeacht de update of invoeging.