méthode non définie PDO lastInsertId
J'ai une requête d'insertion, et je veux obtenir l'ID de la table. J'ai cherché, et j'ai trouvé lastInsertId() de PDO. Lorsque je veux l'utiliser, j'obtiens des erreurs PHP.
C'est mon code:
$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();
Mais cela donne une erreur, celui-ci:
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
Ma base de données de la classe:
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);
}
J'espère que quelqu'un peut m'aider à le résoudre, je veux l'ID qui est donnée à la Requête d'insertion.
source d'informationauteur Marnix
Vous devez vous connecter pour publier un commentaire.
Vous obtenez le lastinsertid de l'objet PDO et pas vos résultats d'objet.
Essayer
$db->lastInsertId()
modifier ci-dessous.
Votre base de données de la classe est l'encapsulation de votre handleDB /objet PDO. Depuis le handleDB variable est privé, vous ne pouvez pas accéder à ce en dehors de votre classe. Vous devez le rendre public comme;
Maintenant, vous pouvez appeler
$db->handleDB->lastInsertId();
Ou vous pouvez exposer le
handleDB->lastInsertId()
comme une fonction comme:Vous appel à l'aide de
$db->lastInsertId();
lastInsertId
est une méthode dePDO
pasPDOStatement
. Donc:votre base de données de la classe doit être une sous-classe de l'AOP par l'extension PDO
de cette façon, toutes les méthodes de PDO sont disponibles pour votre sous-classe.