2012-09-21 4 views
7

PDOを使用してテーブルに行を挿入しています。新しい行のIDが必要なので、新しいページにリダイレクトできます行。致命的なエラー:PDO for MySQLを使用したPHPの非静的メソッド

私は

$id = PDO::lastInsertId();

を使用する場合、私は

Fatal error: Non-static method PDO::lastInsertId() cannot be called statically in C:\xampp\htdocs\createimage.php on line 16 

を取得するには、ここでエラーになり、PHPの:

<?php 

$title = $_POST['title']; 
$caption = $_POST['caption']; 

$conn = new PDO('mysql:host=localhost;dbname=imagesite', 'root', ''); 

$stmt = $conn->prepare('INSERT INTO images (id,link,title,caption) VALUES (NULL,:link,:title,:caption)'); 

$stmt->execute(array(
    'link' => 'fake', 
    'title' => $title, 
    'caption' => $caption 
    )); 

$id = PDO::lastInsertId(); 

header("Location: localhost/image?id=$id"); 

誰もが間違って何が起こっているのか教えてください。または私がやりたいと思っていることを達成する別の方法?

答えて

10

あなたが探している:PHPのドキュメントで

$conn->lastInsertId() 

、彼らはあなたがPDO ::におけるlastInsertIdを(見せる)それは、このメソッドはPDOクラス内であることを理解することです。しかし、オブジェクトを使って呼び出す必要があります。

+0

それは、開始、コミットやロールバックメソッドが呼び出される?どこから関数スコープの制限を持っていませんかDBオブジェクトのインスタンスを持つコントローラからこの関数を呼び出すと、動作しません。 – NullPointer

3

あなたは$conn変数にPDOクラスのインスタンスを作成している

.. ..私はあなたがOOPもう一度確認することをお勧めクラスから直接それを呼び出すべきではありません、あなたは関数を呼び出す必要がありますあなたが作ったオブジェクトから...

$conn->lastInsertId()

関連する問題