你可以在不使用$ mysqli-> insert_id PHP的情况下获得最后编辑的ID吗?

时间:2014-05-08 21:49:49

标签: php mysqli auto-increment

有没有办法在不使用的情况下使用php在MySql表中获取最后一个编辑ID:

$mysqli->insert_id

我目前使用的代码不能使用$ mysqli-> insert_id。 (至少我的知识有限) 我的Sql执行是在一个单独的类和函数中。 我似乎无法找到一种方法来使它工作。

从表单中提取数据的代码:

    $PartyName = $_POST['txtPartyName'];
    $sDate = date('Y-m-d', strtotime($_POST['startDate']));
    $eDate = date('Y-m-d', strtotime($_POST['endDate']));
    //echo $_SESSION['ID']." ". $PartyName." ". $sDate." ".$eDate;        
    EditParty::NewParty($_SESSION['ID'], $PartyName, $sDate, $eDate);
    $_SESSION['PartyID'] = DataBase::LastInsert();

生成Sql语句并传递所需值的函数:

    public function NewParty($ID, $PartyName, $sDate, $eDate){

        $sql = "INSERT INTO parties (HostID, PartyName, sDate, eDate)
        VALUES ( '?' ,  '?' , '?' , '?' )";
        $BindVars =  array($ID, $PartyName, $sDate,$eDate);        
        $result = DataBase::RunSql($sql, $BindVars);
        $_SESSION['PartyID'] = DataBase::LastInsert();

        header('Location: /OnlineParty/PartyPlaning/EditPartyP.php');        
    }

最后获取最后编辑值的函数

 public function LastInsert() {

        $mysqli = DataBase::ConDataBase();
        $result = $mysqli->insert_id;
        echo $result;
        return $result;
    }

1 个答案:

答案 0 :(得分:0)

通过将连接传递给每个函数来解决这个问题,以便它们都使用相同的连接。保存了$ mysqli-> insert_id的值;在$ _SESSION中随处访问。

public function RunSql($Sql, $BindVars) {

    $mysqli = DataBase::ConDataBase();
    $Sql = DataBase::ReturnData($Sql, $BindVars, $mysqli);
    $result = $mysqli->query($Sql);

    if (!$result) {
        printf("Error: %s\n", mysqli_error($mysqli));
        exit();
    }
    $_SESSION['LastInsert'] = DataBase::LastInsert($mysqli);
    return $result;
}

请注意,RunSql中的连接与整个过程中使用的连接相同。

public function LastInsert($mysqli) {        
    $result = $mysqli->insert_id;
    //echo $result;
    return $result;
}
相关问题