簡體   English   中英

PDO :: last插入ID總是與MYSQL一起返回0使用並准備語句

[英]PDO::last Insert Id always return 0 use with MYSQL and prepare statement

我無法從pdo連接中獲取最后一個插入ID,它始終返回0。我沒有解決辦法,請幫助我。 我的功能getConnection();

function getConnection(){
$servername="localhost";
$username="mmjadmin";
$password="gfam";
try{
    $conn = new PDO("mysql:host=$servername;dbname=mmjdb",$username,$password);
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    return $conn; 
}catch(PDOException $e){
    echo "Connect to database fail " . $e->getMessage();
}}

我調用此函數對其他函數進行插入數據

function insertUser($username,$password){
    $sql = "INSERT INTO T_Users(
                    username,
                    password,
                    regist_date,
                    update_date)
                VALUES(
                    :username,
                    :password,
                    CURRENT_TIMESTAMP,
                    CURRENT_TIMESTAMP)";
    $stmt = getConnection()->prepare($sql);
    $stmt->bindParam(':username',$username);
    $stmt->bindParam(':password',$password);
    $stmt->execute();
    $userid = getConnection()->lastInsertId();
}

我無法獲取我插入的最后一個用戶ID,該用戶ID是自動增量,它始終返回0。

當您調用getConnection()時,您已經創建了一個新的連接。 您應該存儲連接並重新使用它:

function insertUser($username,$password){
    $conn = getConnection();
    $sql = "INSERT INTO T_Users(
                    username,
                    password,
                    regist_date,
                    update_date)
                VALUES(
                    :username,
                    :password,
                    CURRENT_TIMESTAMP,
                    CURRENT_TIMESTAMP)";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':username',$username);
    $stmt->bindParam(':password',$password);
    $stmt->execute();
    $userid = $conn->lastInsertId();

    return $userId; // if needed
}

暫無
暫無

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

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