phpmyadmin и mysql pdo lastInsertId()

у меня есть это

$query = "INSERT INTO players VALUES (
                    UUID(),
                    :firstname,
                    :lastname,
                    :age,
                    :birthplace,
                    :height,
                    :weight,
                    :bats,
                    :throws,
                    :position,
                    :jersey,
                    :status,
                    :team,
                    :image_path
                )";
    $sth = $db->prepare($query);
    $sth->execute(array(
        ':firstname' => $firstname,
        ':lastname' => $lastname,
        ':age' => $age,
        ':birthplace' => $birthplace,
        ':height' => $height,
        ':weight' => $weight,
        ':bats' => $bats,
        ':throws' => $throws,
        ':position' => $position,
        ':jersey' => $jersey,
        ':status' => $status,
        ':team' => $team,
        ':image_path' => $image_path
    ));

    $id = $db->lastInsertId();
    return $id;

и я пытаюсь вернуть последний вставленный идентификатор, и все, что я получаю, это возврат 0. любая помощь очень ценится спасибо


person Brady Latsha    schedule 02.06.2012    source источник
comment
Прежде всего проверьте, было ли выполнение успешным. Потому что если бы это было не так, то 0 мог бы быть правильным, верно?   -  person hakre    schedule 03.06.2012
comment
да, выполнение работает и все, строка правильно добавляется в базу данных   -  person Brady Latsha    schedule 03.06.2012


Ответы (1)


LAST_INSERT_ID() и друзья будут работать только для целочисленных идентификаторов, созданных с помощью столбца AUTO_INCREMENT. Вам нужно запустить два запроса - первый

SELECT UUID() AS newuuid;

затем получить и сохранить этот результат (например, в $uuid), затем

"INSERT INTO players VALUES (
                    :uuid,
                    :firstname,
                    :lastname,
...
execute(array(
        ':uuid' => $uuid,
        ':firstname' => $firstname,
        ':lastname' => $lastname,
        ':age' => $age,

оставив вас с $uuid все еще действительным.

person Eugen Rieck    schedule 02.06.2012