2011-12-05 2 views
2

왜?lastInsertId()는 빈 문자열을 반환합니다.

try{ 

    $st = $this->prepare("INSERT INTO thetable (a,b) VALUES (?,?)"); 
    $st->execute(array(5,5)); 

    $id = $this->lastInsertId(); 

    echo $id;   // nothing 
    echo gettype($id); // string 

    return $id;   // and I get NULL returned, this is even weirder... 

}catch(PDOException $e){ 
    die($e); 
    return false; 
} 

테이블에 자동 증가가있는 id 열이 있습니다. Id 값을 얻지 않는 이유는 무엇입니까? 대신

$this->lastInsertId(); 

+0

lastInsertId 함수를 게시하십시오. –

+0

http://php.net/manual/en/pdo.lastinsertid.php – Alex

+0

값이 실제로 삽입 되나요? – konsolenfreddy

답변

1

는 이유를 발견, 당신은

$st->lastInsertId(); 
+1

는'lastInsertId는()'하지 PDOStatement – Nonym

+1

의 난 정말이 답변이 어떻게 작동하는지 궁금는 PDO 객체의 방법입니다! –

+0

이게 정말 효과가 있니?! –

5

확인을 시도합니다. 내가 대답을 게시 할 가능성이 가장 높기 때문에 동일한 문제에서 실행될 다른 사람이있을 것입니다. D

그래서 PDO::lastInsertId();은 비어 있습니다. 원자 트랜잭션을 사용했기 때문에 PDO::commit() 다음에 호출하면 비어 있습니다. ...

위의 코드에서 beginTransaction 및 commit()가 없으므로 문제의 코드가 실제로 정확하므로 문제가 집에 있음을 유의하십시오.

+0

와우, 감사, 즉없는 무언가가 귀하의 질문에 지정된 며칠 0_0 – Frank

+0

미친 저를 구동했을 :) –

+0

네, 죄송합니다 .. 나는 정확한 코드를 게시 할 관련라고 생각하지 않았다 – Alex

관련 문제