Php 为什么这个失败的PDO查询会返回“false”以外的内容?
注意:我的问题是不是为什么查询失败 使用WampServer和phpMyAdmin 代码如下:Php 为什么这个失败的PDO查询会返回“false”以外的内容?,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,注意:我的问题是不是为什么查询失败 使用WampServer和phpMyAdmin 代码如下: function createRecord(){ $id=null; var_dump("ID: ",$id); $length=0; $dbh=$this->dbConnect(); var_dump("DBH: ", $dbh); $dbh->beginTransaction(); //try{ var_dump("DBH: ", $dbh); //$dbh-&g
function createRecord(){
$id=null;
var_dump("ID: ",$id);
$length=0;
$dbh=$this->dbConnect();
var_dump("DBH: ", $dbh);
$dbh->beginTransaction();
//try{
var_dump("DBH: ", $dbh);
//$dbh->beginTransaction();
$insertInSets=$dbh->prepare("INSERT INTO 'sets' () VALUES ()"); // PDO Statement object. ID is generated via autoincrement.
var_dump("InsertInSets: ", $insertInSets);
$id=$dbh->lastInsertId();
var_dump("ID: ",$id);
$insertInClosures=$dbh->prepare("INSERT INTO 'closures' (ancestor,descendant,length) VALUES (:ancestor,:descendant,:length)");
var_dump("InsertInClosures: ", $insertInClosures);
$insertInClosures->bindParam(":ancestor", $id); //<- This is line 22
$insertInClosures->bindParam(":descendant", $id);
$insertInClosures->bindParam(":length", $length);
//$dbh->commit();
exit;
我的问题:
既然我的查询没有通过,为什么我会得到
$id
的值0
,我已经将其设置为null
,并且在查询失败时通常会变成false
$id=$dbh->lastInsertId();
仅仅因为你的其他查询失败了,并不意味着这个查询失败了。返回的值根据不同的驱动程序而不同,但我假设如果没有最近添加的行,则数据库将返回0
尝试在函数开始时调用此函数,甚至在尝试插入内容之前,它也将返回0。您忘记执行查询 加:
$dbh->execute()代码>
然后您可以获取最后一个id:
$id=$dbh->lastInsertId()代码>
$id=$dbh->lastInsertId();