将新对象(作为一行)插入到MySQL数据库时我想获取最后插入的行(id不总是够用,因为我想在通用函数中使用它,其中一些INSERT没有任何自动 - 增加的ID)。在PDO中执行INSERT(使用MySQL)后获取最后插入的行?
我需要这个使用POSSIBLY数据库创建的id,时间戳,或者在某些情况下只是我在插入之前知道的值给予完整对象的成功 - 所以PDO :: lastInsertId不能解决问题。
$query = "INSERT INTO table (".$colinsert.") VALUES (".$colbind.")";
$stmt = $this->db->prepare($query);
$ex = $stmt->execute();
// ... if $ex was successful, how do I retrieve the last inserted row now?
独立于数据库的解决方案将是很好的,但如果它是MySQL的具体它也行:-)
编辑:为了防止一些误解 - 例如我有表user_contact_connection与以下行(contact_id,user_id,additional_connection_info)。主键是(contact_id,user_id)。 PDO :: lastInsertId在这种情况下返回0,因为没有自动增量列。
O.k.在这种情况下,我知道我插入了哪一行,但是我仍然希望找到一种方法来获取最后插入的行,而没有显式查询ID?这甚至有可能吗?
你已经拥有'$ colbind',这有什么问题?使用' - > lastInsertId'获取最后一个插入ID并查询该数据库,为您提供该行的完整信息。 – Mave
你有主键吗? –
有时候我有一个主键,有一个列,有时候是一个带有多个列的主键 - 就像我已经说过的,我需要它作为一个通用函数,我希望返回行。 – Blackbam