php mysql获取最后一个插入行的id给出错误

时间:2014-02-18 05:17:15

标签: php mysql mysqli

我想获取最后一个插入行的id,并使用mysql_insert_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);
}

现在两次我都得到同样的身份。问题是什么我在某处做错了什么?

3 个答案:

答案 0 :(得分:6)

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

此外,UPDATE不会生成新的自动增量ID。你应该在INSERT之后调用mysqli_insert_id(),而不是UPDATE。

答案 1 :(得分:4)

mysqli_insert_id()仅返回idINSERT次查询。 update查询将返回一个ID,因为根据定义,您必须在数据库中有一行才能获得更新。

答案 2 :(得分:2)

使用UPDATE,您正在编辑记录,而不是添加记录。因此,不会生成 ID。您只能在mysql_insert_id上使用INSERT

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