2012-09-21 66 views
7

我使用PDO将一行插入到表中,并且需要新行的ID,以便我可以重定向到基于该页的新页面行。致命错误:PHP中使用PDO的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

您正在寻找:

$conn->lastInsertId() 

在PHP文件,它们显示你PDO :: lastInsertId(),但是这是要了解这个方法是PDO类中。但是你需要使用你的对象来调用它。

+0

它具有功能范围从那里开始的限制,commit和rollback方法被调用?因为当我使用DB对象的实例从控制器调用此函数时,它不起作用。 – NullPointer

3

你不应该直接从类调用它。我建议你检讨OOP一次..

您在$conn变量创建PDO类的一个实例,你应该调用函数从您所做的对象..

$conn->lastInsertId()

相关问题