【发布时间】:2021-03-22 00:45:44
【问题描述】:
我正在尝试获取插入记录后插入 MYSQL 数据库的 ID #(使用自动增量)。我正在使用 PHP PDO lastInsertId()。我使用的是 PHP 7.4 版和 MySQL 8.0.16 版。
这是我的课程和代码。为简洁起见,我删除了一些列名并替换为“...”。
class DB {
private $servername;
private $username;
private $password;
private $dbname;
protected function connect() {
$this->servername ="removed";
$this->username ="removed";
$this->password ="removed";
$this->dbname ="removed";
try {
$dsn = "mysql:host=".$this->servername.";dbname=".$this->dbname; //Data Source Name
$pdo = new PDO($dsn, $this->username, $this->password);
//$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch(\Exception $exception) {
echo("Connection Failed: ".$exception->getMessage());
die();
}
}
}
class Product extends DB
{
public function addProduct(int $CategoryID, int $BrandID....)
{
$sql = "INSERT into products (CategoryID, BrandID, ....) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $this->connect()->prepare($sql);
$stmt->execute([$CategoryID, $BrandID, .....]);
$ProductID = $this->connect()->lastInsertId();
}
}
代码将一条记录插入数据库,分配一个唯一标识符,然后为 $ProductID 返回一个 0。我检查了我的日志,没有来自 PHP 的错误或警告。知道我在这里做错了什么吗?
【问题讨论】: