我无法在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;下面是用于DB连接的代码
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;
}我得到了一个错误,如下所述。
严格标准:第31行的H:\xampp\htdocs\php\tuf4\hunger\includes\classes\class.hunger.php中只应引用变量 致命错误:调用第34行H:\xampp\htdocs\php\tuf4\hunger\includes\classes\class.hunger.php中的未定义方法Db::lastInsertId()
发布于 2014-05-08 16:53:07
bindParam期望有一个变量,通过引用传递。date("Y-m-d H:i:s")显然不是一个变量;)
试一试bindValue。
使用正确的函数将停止错误的多米诺效应,并允许您获得正在寻找的lastInsertId。
编辑:在进一步的审查中,您试图在您的lastInsertId包装类上调用Db,而不是在PDO对象上调用。尝试:
$pdo = $conn->dbConnect();
$stmt = $pdo->prepare($query);
// ...
$orderId = $pdo->lastInsertId();https://stackoverflow.com/questions/23547812
复制相似问题