2014-02-18 116 views
1

我想获得最后插入的行的ID,我使用mysql_insert_id()函数。但给人的问题php mysql获取最后一个插入行的ID给出错

这里是我的代码:

if($i == 0) 
{ 
    $query = "update events set e_did ='".$multi_event."' where eid = '".$display_id."'"; 
    mysqli_query($con,$query); 
    file_put_contents('log.txt', mysql_insert_id(), FILE_APPEND); 
} 
else 
{ 
    $query = "INSERT INTO events (start_date, end_date, text, rec_type, event_pid, event_length, e_did) VALUES ('".$row['start_date']."','".$row['end_date']."','".$row['text']."','".$row['rec_type']."','".$row['event_pid']."','".$row['event_length']."','".$multi_event."')"; 
    mysqli_query($con,$query); 
    file_put_contents('log.txt', 'A'.mysql_insert_id().'A', FILE_APPEND); 
} 

现在无论时间I M得到相同的ID。什么是问题。我在某处做错了什么?

+0

你有任何主键自动增加你的表'事件'? –

+0

id列自动递增 –

+0

所以它应该在插入查询后工作.it将不会在更新后查询 –

回答

6

如果使用mysqli函数,则必须使用mysqli_insert_id。你不能混用ext/mysql和ext/mysqli。

另外,UPDATE不会生成新的自动递增ID。你应该在INSERT后调用mysqli_insert_id(),但不要更新。

+0

现在没有成功任何id返回null –

+0

完成....忘了传递$ con参数:)干杯 –

+0

UPDATE可以被设置为自动增量id,尽管:) –

4

mysqli_insert_id()对于INSERT查询只返回id。一个update查询将不是返回一个id,因为从定义上说,你必须已经有一个数据库中的行,它正在得到更新。

+0

谢谢....工作 –

2

随着UPDATE,你正在编辑记录,而不是增加。因此没有生成新的 ID。您只能在INSERT上使用mysql_insert_id

注意:mysql_*功能已弃用,在将来的版本中不再支持。您应该使用mysqli_*PDO