gpt4 book ai didi

php - PDO::lastInsertID 有时不起作用

转载 作者:行者123 更新时间:2023-11-30 23:18:19 26 4
gpt4 key购买 nike

当我得到 lastInsertId() 时,我的 pdo 连接发生了一些奇怪的事情:在 90% 的情况下它工作正常,但在 10% 的情况下它返回 0(我不知道它是真的 0 还是 FALSE) .但在 100% 的情况下,我的记录都已成功插入。

这是我的代码:

function execute_insert($sql, $values) {
try {
$dbConnection = new PDO('mysql:dbname=mydb;host=localhost;charset=utf8', 'username', 'mypass');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbConnection->beginTransaction();
$stmt = $dbConnection->prepare($sql);

$stmt->execute($values);

$i = $dbConnection->lastInsertId();

$dbConnection->commit();
return $i;

} catch (PDOException $e) {
echo "erro :S - " . $e->getMessage();
die();
}
}


//blablabla

$sql = "INSERT INTO ai_pessoas(nome, tipo, cpf, orgao_emissor_id,
rg_uf, rg, telefone1, telefone2, celular1, cidade_id, cep, endereco,
numero,complemento,bairro, email_principal, email_secundario, email_principal_confirmado,
dt_nascimento, oferta_id) ";

$sql .= "VALUES(:nome,1,:cpf,:orgaorg,:ufrg,:rg,:telefone,:outroTelefone,:celular,:cidade,:cep,:endereco,:numero,:complemento,:bairro,:email,:emailAlternativo,FALSE,:datanasc,:idOfertaAtual);";

$idPessoa = execute_insert($sql,
array(
':nome' => $nome,
':cpf' => $cpf,
':orgaorg' => $orgaorg,
':ufrg' => $ufrg,
':rg' => $rg,
':telefone' => $telefone,
':outroTelefone' => $outroTelefone,
':celular' => $celular,
':cidade' => $cidade,
':cep' => $cep,
':endereco' => $endereco,
':numero' => $numero,
':complemento' => $complemento,
':bairro' => $bairro,
':email' => $email,
':emailAlternativo' => $emailAlternativo,
':datanasc' => $datanasc,
':idOfertaAtual' => $idOfertaAtual
));

if ($idPessoa > 0){
//sometimes enters here, sometimes not
}

我的记录被插入,但“if ($idPessoa > 0)”有时会起作用,这意味着 $idPessoa 为 0 或 FALSE。

有什么线索吗?

非常感谢!

最佳答案

你可以试试LAST_INSERT_ID()为此目的。

附言您的函数每次都会连接。

附言我还看到您不处理错误和回滚。我认为在您的 10% 中插入失败。探索关于双重调用此函数,因为您在某些字段上有 UNIQUE 索引。并添加支票 result of executeerrorInfo .

关于php - PDO::lastInsertID 有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599430/

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