簡體   English   中英

讀取SELECT LAST_INSERT_ID(),這似乎會產生一個數組

[英]Reading SELECT LAST_INSERT_ID(), which seems to produce an array

我正在使用PHP和SQL語言填充MySQL數據庫。 我正在填充的表稱為項目。 將記錄添加到項目后,我想發送一封電子郵件,其中包含project_id和project_title。 因此,在填充項目表后,我需要知道project_id。

命令:$ sql =“ SELECT LAST_INSERT_ID()”; 返回一個數組。 我已經對陣列中的內容進行了幾次猜測,沒有任何運氣。

public function add_project($project_title, $project_description, 
        $skill_cat_id, $name_id) {
    $dbConn = new DatabaseConn();
    $this->name_id = $name_id;
    $this->skill_cat_id = $skill_cat_id;
    if($this->check_for_duplicates() != null) {
        $message = "This Project already exist!";
        echo "<script type='text/javascript'>alert('$message');</script>";
    } else {
        $sql = "INSERT INTO project "
                . "(project_id, project_title, project_start_date, "
                . "project_description, skill_cat_id, volunteer_id, response_id, name_id) "
                . "VALUES (DEFAULT, $project_title, DEFAULT, "
                . "$project_description, $skill_cat_id, DEFAULT, DEFAULT, $name_id)";
        try {
            $dbConn->exec($sql);
        }
        catch(PDOException $e) {
            $message = $sql . "<br />" . $e->getMessage();
            echo "<script type='text/javascript'>alert('$message');</script>";
        }
        $dbConn2 = new DatabaseConn();
        $sql = "SELECT LAST_INSERT_ID()";
        try {
            $statement = $dbConn2->prepare($sql);
            $statement->execute();
            $result = $statement->fetch();
            $statement->closeCursor();
        }
        catch(PDOException $e) {
            $message = $sql . "<br />" . $e->getMessage();
            echo "<script type='text/javascript'>alert('$message');</script>";
        }
        return $result;
    }
}

我期望項目表的project_id,但命令返回一個數組。

PDOStatement::fetch()始終返回一個數組,該數組是結果集的一行。 該數組可以是按列名索引的序數數組或哈希數組。

確保查詢具有一列和一行都沒關系。 它仍然是結果集,為此fetch()返回一個數組。 它返回的數組只有一個條目,對應於查詢的單列。

如果只想返回一列作為標量,請嘗試PDOStatement :: fetchColumn()

請參閱文檔以獲取描述和代碼示例。

您可以從pdo對象本身獲取最后的插入ID。 https://www.php.net/manual/en/pdo.lastinsertid.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM