PDO获取最后一次插入' id'

时间:2015-04-23 17:51:57

标签: 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 = $dbo->prepare($sql);
$insert->execute(array('name'=>'name val', 'address'=>'address val'));

echo $insert->lastInsertId(); 

插入行但我总是得到一个空白值,我想要的是列' ID'的值。我该怎么做呢?

2 个答案:

答案 0 :(得分:4)

你做的几乎是正确的。

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

$insert字段是您可以执行的语句,而不是PDO驱动程序。那是另一个例子。执行后,您可以请求最后插入的ID。但是你必须使用驱动程序对象而不是语句来调用此方法。

$dbo->lastInsertId(); 

使用此语句,您要求PDO驱动程序返回已插入表中的插入行的ID。

此外,在打开连接后立即添加$dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);以获取真实原因导致其失败。

答案 1 :(得分:0)

请确保您的表格中包含带有AUTO_INCREMENT的列'id'。