Bonjour à tous,
J'ai un problème avec PDO que je n'arrive malheureusement pas à résoudre...
Je souhaite récupérer le dernier ID d'une insertion en base de données mais voilà mon erreur :
Fatal error: Call to undefined method PDOStatement::lastInsertId() in C:\wamp\www\commande\panier.php on line 31
Voici la ligne 31 :
Et voici le code complet :
Voici également le contenu de ma classe DB :
J'ai essayé en mettant
J'ai un problème avec PDO que je n'arrive malheureusement pas à résoudre...
Je souhaite récupérer le dernier ID d'une insertion en base de données mais voilà mon erreur :
Fatal error: Call to undefined method PDOStatement::lastInsertId() in C:\wamp\www\commande\panier.php on line 31
Voici la ligne 31 :
$commande_id = $requete->lastInsertId();
Et voici le code complet :
/On ajoute la commande dans la table commandes
$requete = $DB->insert('INSERT INTO commandes (date_commande, date_livraison, clients_id_clients) VALUES(NOW(), :date_livraison, :id_client)', array(
'date_livraison' => $date_livraison,
'id_client' => $_SESSION['id']));
//recuperation de l'id de la commande insérée
$commande_id = $requete->lastInsertId();
Voici également le contenu de ma classe DB :
class DB {
private $host = 'localhost';
private $username = 'root';
private $password = '';
private $database = 'schwoob';
private $db;
public function __construct($host = null, $username = null, $password = null, $database = null) {
if($host != null) {
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
//Connexion à la BDD
try {
$this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->username, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch(PDOException $e) {
die('<h1>Impossible de se connecter à la base de données</h1>');
}
}
//Fonction query permettant d'executer facilement des requêtes préparées en fonction de paramètres
public function query($sql, $data = array()) {
$requete = $this->db->prepare($sql);
$requete->execute($data);
return $requete->fetchAll(PDO::FETCH_OBJ);
}
public function insert($sql, $data = array()) {
$requete = $this->db->prepare($sql);
$requete->execute($data);
return $requete;
}
}
J'ai essayé en mettant
$commande_id = $DB->lastInsertId();
mais ça ne change rien.