2015-11-05 41 views
1

我无法从pdo连接获取最后一个插入ID,它总是返回0.我没有解决方案请帮助我。 my function getConnection();PDO :: last插入ID总是返回0使用MYSQL并准备语句

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。

+0

它现在工作,令人难以置信的是,这样做。你能解释我吗?因为它看起来像你的代码和我的代码一样。 –

+0

我在答案中解释了它。不要多次调用'getConnection()'。如果有帮助,请接受我的回答:stackoverflow.com/help/someone-answers –

回答

5

当您拨打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 
} 
+0

改变这个'$ stmt = $ con> prepare($ sql);'to'$ stmt = $ conn-> prepare($ sql );' – Saty

+0

感谢提示@Saty –

+0

最后一件事你的功能不会返回最后一个插入ID请将此添加到您的代码 – Saty