Почему моя функция PHP PDO вставляет один цикл записи MySQL без конца? - PullRequest
0 голосов
/ 22 января 2012

All

Я пробую приведенный ниже код, и я думаю, что, как я уже писал, значение $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

РЕДАКТИРОВАТЬ: я не могу воссоздать проблему на отдельном куске кода, поэтому я думаю, что проблема не связана с этой частью кода.

1 Ответ

2 голосов
/ 22 января 2012

Вместо выполнения запроса на последний идентификатор вставки вы должны использовать PDO :: last_insert_id.

http://php.net/manual/de/pdo.lastinsertid.php

Я не уверен, почему вам нужно использовать циклвставить свой ряд.Попробуйте проверить подготовленный и выполненный оператор с помощью debugDumpParams(), вы можете также использовать bindParam() для подготовленного оператора вместо того, чтобы вставлять переменные в строку, как это.

Редактировать: Вы убедились, чтотаблица, в которую вы пытаетесь вставить, имеет столбец, установленный для AUTO_INCREMENT?В противном случае драйвер PDO не будет возвращать значимые данные для last_insert_id().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...