Php PDO获取最后插入的“id”

Php PDO获取最后插入的“id”,php,mysql,pdo,Php,Mysql,Pdo,我尝试了其他一些答案,但似乎没有任何效果。以下是我正在做的: try { $dbo = new PDO("dblib:host=127.0.0.1;dbname=db","user","password"); } catch (PDOException $e) { die($e->getMessage()); } $sql = "INSERT INTO table (name, address) values (:name,:address)"; $insert = $d

我尝试了其他一些答案,但似乎没有任何效果。以下是我正在做的:

try {
    $dbo = new PDO("dblib:host=127.0.0.1;dbname=db","user","password");
} catch (PDOException $e) {
    die($e->getMessage());
}

$sql = "INSERT INTO table (name, address) values (:name,:address)";
$insert = $dbo->prepare($sql);
$insert->execute(array('name'=>'name val', 'address'=>'address val'));

echo $insert->lastInsertId(); 

行被插入,但当我想要的是列“ID”的值时,我总是得到一个空值。我该怎么做呢?

你做得差不多对了

$sql = "INSERT INTO table (name, address) values (:name,:address)";
$insert = $dbo->prepare($sql);
$insert字段是一条语句,而不是可以执行的PDO驱动程序。这是另一个例子。执行后,您可以请求最后插入的ID。但是您必须使用驱动程序对象而不是语句调用此方法

$dbo->lastInsertId(); 
使用此语句,您要求PDO驱动程序返回您在表中插入的插入行的ID


另外,添加$dbo->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION;在连接打开后立即获取失败的真正原因。

请确保您的表中有一个自动递增的列“id”。

表中是否有主键?是的,“id”是主键是PDO的一个方法,而不是PDO语句add$dbo->setAttributePDO::ATTR\u ERRMODE,PDO::ERRMODE\u EXCEPTION;在连接打开后立即获取失败的真正原因。仍然无法使用$insertid=$dbo->lastInsertId;echo$insertid;我一片空白。