Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

obtendo mysql_insert_id() enquanto usa ON DUPLICATE KEY UPDATE com PHP


Aqui está a resposta, como sugerido por Alexandre:

quando você usa o id=LAST_INSERT_ID(id) ele define o valor de mysql_insert_id =o ID atualizado-- então seu código final deve se parecer com:
<?
    $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();

Isso retornará o valor correto para $my_id, independentemente da atualização ou inserção.