为什么我的PHP PDO函数插入一个MySQL记录循环而没有结束


Why does my PHP PDO function to insert one MySQL record loop without end?

全部,

我正在尝试下面的代码,我认为正如我所写的,$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()返回有意义的数据。