我已经尝试了其他一些答案但似乎没有任何效果。这就是我正在做的事情:
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'的值。我该怎么做呢?
答案 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'。