2012-09-21 20 views
7

Wstawiam, używając PDO, wiersz do tabeli, i potrzebuję identyfikatora nowego wiersza, aby móc przekierować na nową stronę opartą na tym rząd.Błąd krytyczny: metoda niestatyczna w PHP używająca PDO dla MySQL

Gdy używam

$id = PDO::lastInsertId();

uzyskać

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

Oto php, który powoduje błąd:

<?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"); 

Może ktoś powiedzieć, co się dzieje źle? Lub inny sposób osiągnięcia tego, co zamierzam zrobić?

Odpowiedz

10

Szukacie:

$conn->lastInsertId() 

W dokumentacji PHP, pokazują Ci PDO :: lastInsertId(), ale to, aby zrozumieć, ta metoda jest wewnątrz klasy PDO. Ale musisz wywołać to używając swojego obiektu.

+0

Czy to ma ograniczenie zakresu funkcji, z którego rozpocznie się, popełnić i metody wycofania się nazywa? Ponieważ kiedy wywołuję tę funkcję z kontrolera z instancją obiektu DB, to nie działa. – NullPointer

3

Nie należy zadzwonić bezpośrednio z klasy .. Proponuję, aby przejrzeć OOP raz więcej ..

utworzeniu instancji klasy PDO w $conn zmienna i należy wywołać funkcję z obiektu zostały wykonane ..

$conn->lastInsertId()

Powiązane problemy