首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PDO获取lastInsertId

使用PDO获取lastInsertId
EN

Stack Overflow用户
提问于 2014-05-08 16:45:54
回答 1查看 1.2K关注 0票数 0

我无法在php中使用PDO获取lastInserId。

代码语言:javascript
复制
$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连接的代码

代码语言:javascript
复制
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()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 16:53:07

bindParam期望有一个变量,通过引用传递。date("Y-m-d H:i:s")显然不是一个变量;)

试一试bindValue

使用正确的函数将停止错误的多米诺效应,并允许您获得正在寻找的lastInsertId

编辑:在进一步的审查中,您试图在您的lastInsertId包装类上调用Db,而不是在PDO对象上调用。尝试:

代码语言:javascript
复制
$pdo = $conn->dbConnect();
$stmt = $pdo->prepare($query);
// ...
$orderId = $pdo->lastInsertId();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23547812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档