2011-12-05 4 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

は、あなただけの理由を見つけ、[OK]を

$st->lastInsertId(); 
+1

'lastInsertId()はPDOSオブジェクトのメソッドであり、PDOStatementではありません – Nonym

+1

私は本当にこの答えがどのように働いたのだろうか? –

+0

これは本当に動作しますか? –

5

を試してみました。 D

したがってPDO::lastInsertId();が空になるのは、アトミックトランザクションを使用していたので、私が行ったPDO::commit()の後に呼び出すことです。これは答えとして投稿しています。だから私の質問のコードが実際に正しいの上、問題が自宅:)

たコードで、私はのbeginTransactionを持ってコミットしない()...

注()を実行これは、後に呼び出す必要があります

+0

うわー、ありがとう、それはあなたの質問で指定されたものではなかった0_ – Frank

+0

数日のうちに私を狂わせたでしょう:) –

+0

はい、申し訳ありません..私はそれが正確なコードを投稿することに関連していたとは思わなかった – Alex

関連する問題