全部,
我正在尝试下面的代码,我认为正如我所写的,$inserted
的值永远不会变成TRUE
,我不知道为什么。当我运行该程序时,我会创建数千个空记录,并且我必须手动关闭服务器。
function createRecord(){ // Query creates a new empty record in table, returns the auto-incremented ID.
$dbConnection=$this->dbConnect();
$inserted=false;
$IDQuery=null;
while (!$inserted){
$insertQuery=$dbConnection->prepare("INSERT INTO $this->table () VALUES ()");
$inserted=$insertQuery->execute();
if ($inserted){
$IDQuery=$dbConnection->prepare("SELECT LAST_INSERT_ID()");
$IDQuery->execute();
}
}
$result=$IDQuery->fetch(PDO::FETCH_ASSOC);
$ID=$result["Last_Insert_ID()"];
return $ID;
}
非常感谢你帮我做这件事。
干杯,
JDelage
编辑:我不能在一段单独的代码上重新创建这个问题,所以我认为这个问题与代码的这部分无关。
与其运行查询最后一个插入id,不如使用PDO::last_insert_id。
http://php.net/manual/de/pdo.lastinsertid.php
我不知道你为什么需要使用循环来插入你的行。尝试使用debugDumpParams()
检查准备好并执行的语句,您可能也希望将bindParam()
用于准备好的语句,而不是像那样将变量注入字符串中。
编辑:您是否确保要插入的表有一个AUTO_INCREMENT列集?否则,PDO驱动程序将不会为last_insert_id()
返回有意义的数据。