调用方法后获取PDO lastInsertId()

时间:2016-03-17 23:14:21

标签: php mysql pdo

在我的代码中,我使用methods将数据插入MySQL数据库。然后,该方法返回truefalse

如果method返回true我想使用lastInsertId()来运行第二种方法。

if($db->insertMethod($data)){
    $lastId = $db->lastInsertId();
    $db->secondInsertMethod($lastId, $data2)
}

db.class.php

public function insertMethod($data) {
    $db = new DB();
    $insert = //Run SQL insert
    if($insert > 0 ) {
        return true;
    }else{
        return false;
    }   
}

public function lastInsertId() {
        return $this->pdo->lastInsertId();
}

在这种情况下,$db->lastInsertId();将返回0。一种解决方法是让insertMethod返回此而不仅仅是true,但还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

编辑!

解决方案是正确的

data2是否链接到数据?

你也可以:

public function insertMethod($data, $data2) {
    $db = new DB();
    $insert = //Run SQL insert
    if($insert > 0 ) {
        $this->insertMethod(this->lastInsertId(), $data2);
        return true;
    } else {
        return false;
    }   
}

或者data2是否链接到数据

public function insertMethod($data) {
    $db = new DB();
    $insert = //Run SQL insert
    if($insert > 0 ) {
        $data2 = // get data2
        $this->insertMethod(this->lastInsertId(), $data2);
        return true;
    } else {
        return false;
    }   
}

public function insertMethod($id, $data) {
    // your code...
}

public function insertMethod($data, $id = null) {
    $db = new DB();        
    if($id == null)
        // code to insert without id
    else { 
        $insert = //Run SQL insert
        if($insert > 0 ) {
            $data2 = // get data2
            $this->insertMethod($data2, this->lastInsertId());
        }
    }   
}

解决方案是正确的。为了让您了解您认为哪种情况最适合您的情况。