2012-09-21 19 views
7

Estoy insertando, usando PDO, una fila en la tabla, y necesito la identificación de la nueva fila para poder redireccionar a la nueva página basada en esa fila.Error fatal: método no estático en PHP usando PDO para MySQL

Cuando uso

$id = PDO::lastInsertId();

consigo

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

Esto es el php que se traduce en un error:

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

¿Alguien puede decir lo que va mal? ¿O alguna otra forma de lograr eso que estoy buscando hacer?

Respuesta

10

Usted está buscando:

$conn->lastInsertId() 

En la documentación de PHP, muestran que PDO :: lastInsertId() pero eso es de entender que este método está dentro de la clase PDO. Pero debes llamarlo usando tu objeto.

+0

lo hace tiene una restricción del ámbito de la función de dónde empezar, métodos commit y rollback se llaman? Porque cuando llamo a esta función desde el controlador con la instancia del objeto DB, no funciona. – NullPointer

3

no debería llamar directamente desde la clase .. Le sugiero que revise la programación orientada a objetos, una vez más ..

que haya creado una instancia de la clase PDO en el $conn variable y debe llamar a la función del objeto que ha hecho ..

$conn->lastInsertId()

Cuestiones relacionadas