8

我正在使用 PDO 在表中插入一行,并且我需要新行的 id,以便我可以根据该行重定向到新页面。

当我使用

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

谁能告诉我出了什么问题?或者另一种方式来实现我想要做的?

4

2 回答 2

11

您正在寻找:

$conn->lastInsertId()

在 PHP 文档中,他们向您展示了 PDO::lastInsertId() 但这是为了了解此方法在 PDO 类中。但是您需要使用您的对象来调用它。

于 2012-09-21T18:47:17.157 回答
3

您不应该直接从课堂上调用它。我建议您再次查看 OOP ..

您已经在变量中创建了 PDO 类的实例,$conn并且应该从您创建的对象中调用该函数。

$conn->lastInsertId()

于 2012-09-21T18:49:15.327 回答