繁体   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