我无法在php
中使用PDO获取lastInserId$conn = new Db();
$query = "INSERT INTO orders SET
order_timestamp= :orderTimestamp ,
customer_id= :customerId";
$stmt = $conn->dbConnect()->prepare($query);
$stmt->bindParam(':orderTimestamp', date("Y-m-d H:i:s"), PDO::PARAM_STR);
$stmt->bindParam(':customerId', $_SESSION["customerId"], PDO::PARAM_INT);
$stmt->execute();
$orderId = $conn->lastInsertId();
return $orderId;
以下是用于数据库连接的代码
public function dbConnect(){
try {
$conn = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME, DBUSER, DBPASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
return $conn;
}
我收到如下所述的错误。
严格标准:只应通过引用传递变量 H:\ xampp \ htdocs \ php \ tuf4 \ hunger \ includes \ classes \ class.hunger.php on 第31行
致命错误:调用未定义的方法Db :: lastInsertId()in H:\ xampp \ htdocs \ php \ tuf4 \ hunger \ includes \ classes \ class.hunger.php on 第34行
答案 0 :(得分:3)
bindParam
期望变量通过引用传递。 date("Y-m-d H:i:s")
显然不是变量;)
请尝试bindValue
。
使用正确的功能将停止错误的多米诺骨牌效应,并允许您获得正在寻找的lastInsertId
。
编辑:进一步审核时,您尝试在lastInsertId
对象上的Db
包装器类 not 上调用PDO
。尝试:
$pdo = $conn->dbConnect();
$stmt = $pdo->prepare($query);
// ...
$orderId = $pdo->lastInsertId();