簡體   English   中英

pdo lastInsertId()繼續返回0

[英]pdo lastInsertId() keeps returning 0

我有兩個查詢,分別將數據插入到各自的表中。 很好 我一直在嘗試的是在執行每個查詢后獲取lastInsertId並將這些值插入到第三張表中。 但是,當我檢查數據庫時,將輸入值0。 兩個表都有一個自動遞增的字段。 您能通過我的代碼告訴為什么發生這種情況或有什么建議嗎? 我對php比較陌生,所以如果您注意到我的編碼方式不整潔,尤其是在執行查詢的末尾,請告訴我。 我會很感激的。

if ($oneWay)
    {
        $query = "INSERT INTO journey
        (from_destination,to_destination,journey_type,depart_date,depart_time,seats_available,journey_message,user_type)
        VALUES('$pjFrom','$pjTo','$radioJourneyType', STR_TO_DATE('$departDate','%d/%m/%Y'),'$newDepTime','$seatcounter','$textareanotes','$radUserType')";
        $userID = "SELECT user_id FROM `user` ORDER BY journey_id DESC LIMIT 1";
    }
    else
    {
        $query = "INSERT INTO journey
        (from_destination,to_destination,journey_type,depart_date,depart_time,return_date,return_time,seats_available,journey_message,user_type)
        VALUES('$pjFrom','$pjTo','$radioJourneyType', STR_TO_DATE('$departDate','%d/%m/%Y'),'$newDepTime',STR_TO_DATE('$returnDate','%d/%m/%Y'),'$newRetTime ','$seatcounter','$textareanotes','$radUserType')";
        //$userID = "SELECT user_id FROM `user` ORDER BY journey_id DESC LIMIT 1";
    }
    $queryfb = "INSERT INTO user
        (facebook_id,facebook_username,facebook_first_name,facebook_last_name,facebook_image,facebook_link)
        VALUES('$hdnFacebookId','$hdnUsername','$hdnFirstName','$hdnLastName','$hdnFacebookImg','$hdnFacebookUrl')";
        //$journeyID = "SELECT journey_id FROM `journey` ORDER BY journey_id DESC LIMIT 1";

    $queryUserJourney = "INSERT INTO user_journey
                        (user_id,journey_id)
                        VALUES('$lastUserID','$lastJourneyID')";

    $db->exec($query);
    $lastUserID = $db->lastInsertId();
    $db->exec($queryfb);
    $lastJourneyID = $db->lastInsertId();
    $db->exec($queryUserJourney);//problem: 0 values being entered???
}

更新

$db->exec($query);
    $lastUserID = $db->lastInsertId();
    $db->exec($queryfb);
    $lastJourneyID = $db->lastInsertId();
    $queryUserJourney = "INSERT INTO user_journey
                        (user_id,journey_id)
                        VALUES('$lastUserID','$lastJourneyID')";
    $db->exec($queryUserJourney);working thanks to jmadsen

您可能要嘗試

$db->lastInsertId();

...代替。 注意lastInsertId的小寫字母d

參考文件

既然我已經喝了咖啡-在填充變量之前,您正在創建最后一個插入語句。 我認為這是梅林暗示的

您需要將$ queryUserJourney向下移動到2個插入下方。

@Colin,

如果我沒有完全弄錯的話,PDO的最后一個插入ID將返回自動遞增主鍵的值。 在我看來$ query的表沒有這個

暫無
暫無

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

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