如何使用PDO插入然后在同一函数中返回`lastInsertId()`?

时间:2016-09-06 20:37:39

标签: php pdo

如何使用PDO插入然后返回创建的lastInsertId()?这可以在函数内部完成,但无论如何,我想在函数外部获得lastInsertId()

function insert_PDO($item1, $item2){

        $params =   array(
                        ":item1"        =>      $item1 ,
                        ":item2"        =>      $item2 
                    );

         $sql = "INSERT INTO table                  (column1,   column2)
                VALUES                              (:item1,    :item2)
            ";

    //return $this->insert($sql, $params);    //this one works

    //now trying this, want to return 

            $insertitems    = $this->insert($sql, $params);  
            $item_ID        = $this->lastInsertId();  
            return ($insertitems, $item_ID) ;  //does not work
}

protected function insert($sql, $params)
{
    $stmt = $this->dbh->prepare($sql);
    return $stmt->execute($params);
}

// I tried this too with the original insert:

    $results        =       $createInsert   ->  insert_PDO($item1, $item2);
    $lastid = $results[0];

    foreach($results1 as $row){
        $auditVID = $row[ID];
        $auditVID = $row[0];
    }   

1 个答案:

答案 0 :(得分:0)

声明

return ($insertitems, $item_ID) ; 

会导致语法错误。

如果要返回多个值 - 请使用array:

$insertitems    = $this->insert($sql, $params);  
$item_ID        = $this->lastInsertId();  
return array($insertitems, $item_ID) ;
// or for newer php versions:
return [$insertitems, $item_ID];