2012-06-02 3 views
0

я есть это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 вернулся. любая помощь очень ценится благодаря

+1

Прежде всего проверьте, если исполнение было успешным. Потому что, если это не так, то 0 может быть просто правильным, верно? – hakre

+0

да исполнение работает и все, строка правильно добавляется в базу данных –

ответ

3

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 еще действительным.

+0

ах, большое спасибо, это сработает! –

Смежные вопросы