[英]undefined method PDO lastInsertId
我有一个插入查询,我想从表中获取ID。 我一直在搜索,并且找到了PDO的lastInsertId()。 当我想使用它时,出现PHP错误。
这是我的代码:
$db = new database();
$naam = $db->quoteQuery($_POST['naam']);
$barcode = $db->quoteQuery($_POST['barcode']);
$sql = "INSERT INTO products(name, barcode) VALUES (".$name.",".$barcode.")";
$results = $db->executeQuery($sql);
$lastid = $results->lastInsertId();
但这给出了错误,这是一个:
Fatal error: Call to undefined method PDOStatement::lastInsertId() in /home/onlineweuh/domains/onlinewebapps.nl/public_html/vsb/admin/add-product.class.php on line 297
我的数据库类:
class database
{
private $handleDB;
public function __construct()
{
$host = ;
$user = ;
$database = ;
$password = ;
try
{
$this->handleDB = new PDO('mysql:host='.$host.';dbname='.$database, $user, $password);
}
catch (PDOException $e)
{
print_r($e);
}
$this->handleDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
我希望有人可以帮助我解决它,我想要在插入查询中给出的ID。
您从PDO对象而不是结果对象获取lastinsertid。
试试$db->lastInsertId()
在下面编辑。
您的数据库类正在封装handleDB / PDO对象。 由于handleDB变量是私有的,因此您不能在类外部访问此变量。 您可能需要像这样公开发布;
class database
{
public $handleDB;
public function __construct()
{
$host = 'removed';
$user = 'removed';
$database = 'removed';
$password = 'removed';
try
{
$this->handleDB = new PDO('mysql:host='.$host.';dbname='.$database, $user, $password);
}
catch (PDOException $e)
{
print_r($e);
}
$this->handleDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
}
现在您可以调用$db->handleDB->lastInsertId();
或者,您可以将handleDB->lastInsertId()
公开为类似以下功能:
class database
{
private $handleDB;
public function __construct()
{
$host = 'remove';
$user = 'removed';
$database = 'removed';
$password = 'removed';
try
{
$this->handleDB = new PDO('mysql:host='.$host.';dbname='.$database, $user, $password);
}
catch (PDOException $e)
{
print_r($e);
}
$this->handleDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
public function lastInsertId(){
return $this->handleDB->lastInsertId();
}
}
您将使用$db->lastInsertId();
调用$db->lastInsertId();
lastInsertId
是PDO
的方法,不是PDOStatement
。 因此:
$db->lastInsertId();
您的数据库类需要通过扩展PDO成为PDO的子类
class database extends PDO
这样子对象就可以使用PDO中的所有方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.