gpt4 book ai didi

mysql - insert-update pdo mysql 查询并获取最后插入的 id(如果需要)

转载 作者:行者123 更新时间:2023-11-29 08:42:25 24 4
gpt4 key购买 nike

我有简单的插入/更新页面,我在其中检查是否有“id”,如果没有,则继续插入查询,否则继续更新查询,这工作正常。问题是我需要为下一个查询提供该 id,如果是插入查询,我会将其获取为“lastInsertId”,但如果是更新查询,“lastInsertId”将覆盖 $_POST["id"]。

有没有办法识别已执行的查询(插入或更新),然后获取正确的 ID,或者我必须单独绑定(bind)/执行查询?

$id= $_POST["id"];  
try {
$DBH = db_connect ();
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
if ($id== "") {
$query= $DBH->prepare('INSERT INTO table (x1,x2) VALUES(:x1,:x2)');
} else {
$query= $DBH->prepare('UPDATE day SET x1=:x1, x2=:x2 WHERE id= :id');
$query-> bindValue(':id', $id);
}

$query-> bindValue(':x1', $x1);
$query-> bindValue(':x2', $x2);
$query-> execute();

$id= $DBH-> lastInsertId('id') ; //get last inserted ID
}

最佳答案

您可以使用与选择插入查询作为要执行的查询完全相同的 if 子句。您的代码将如下所示:

$id= $_POST["id"];  
try {
$DBH = db_connect ();
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
if ($id== "") {
$query= $DBH->prepare('INSERT INTO table (x1,x2) VALUES(:x1,:x2)');
} else {
$query= $DBH->prepare('UPDATE day SET x1=:x1, x2=:x2 WHERE id= :id');
$query-> bindValue(':id', $id);
}

$query-> bindValue(':x1', $x1);
$query->bindValue(':x2',$x2);
$query-> execute();

if($id==""){
$id= $DBH-> lastInsertId('id') ; //get last inserted ID
}
}

关于mysql - insert-update pdo mysql 查询并获取最后插入的 id(如果需要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443862/

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