gpt4 book ai didi

php - PDO::last Insert Id 总是返回 0 与 MYSQL 和 prepare 语句一起使用

转载 作者:行者123 更新时间:2023-11-29 04:18:21 25 4
gpt4 key购买 nike

我无法从 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
}

关于php - PDO::last Insert Id 总是返回 0 与 MYSQL 和 prepare 语句一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com