【发布时间】:2012-02-01 10:54:28
【问题描述】:
当mysql错误返回重复键时,有没有办法在插入后检索记录的ID(主键)?
例如我会怎么做:
$sql = "INSERT INTO table (`col1`, `col2`) VALUES ('$val1', '$val2')";
$result = mysql_query($sql);
if($result){
$id = mysql_insert_id();
}
else {
if(stristr(mysql_error(), "duplicate"){
$sql = "SELECT `id` FROM `table` WHERE `col1`='$val1' AND `col2`='$val2'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$id = $row['id'];
}
else {
die(mysql_error());
}
}
这里我不得不做两个 sql 语句,这不仅需要时间和精力,而且还要重复代码。
我不能使用ON DUPLICATE KEY UPDATE,因为我想使用最后插入的 id 或不能复制的记录的 id 来更新不同的表。
那么,我做的事情对吗?或者有没有办法获取行的id?
谢谢
【问题讨论】: