Php 具有插入和获取输出错误的PDO事务语句
我只是尝试将两个last\u insert\u id()作为输出输出,查询运行良好,并且成功地将数据插入到两个表中Php 具有插入和获取输出错误的PDO事务语句,php,mysql,pdo,Php,Mysql,Pdo,我只是尝试将两个last\u insert\u id()作为输出输出,查询运行良好,并且成功地将数据插入到两个表中 但它在第$os=$tr->fetch(PDO::fetch_ASSOC)行中向我显示了错误您不应该使用一个调用执行多个语句。如果你使用本地语言,它将不起作用,而且很难正确使用 将其拆分为多个语句,并使用PDO函数获取最后插入的ID $tr = $connection->prepare(" START TRANSACTION;
但它在第
$os=$tr->fetch(PDO::fetch_ASSOC)行中向我显示了错误代码>您不应该使用一个调用执行多个语句。如果你使用本地语言,它将不起作用,而且很难正确使用
将其拆分为多个语句,并使用PDO函数获取最后插入的ID
$tr = $connection->prepare("
START TRANSACTION;
INSERT INTO data(name, address, dated) VALUES('Umesh', 'Kathmandu', NOW());
SET @DataID:= LAST_INSERT_ID();
INSERT INTO activity(data_id, activity, dated) VALUES(@DataID, 'Test Implemented', NOW() );
SET @ActID:= LAST_INSERT_ID();
SELECT @DataID as data_id, @ActID as activity_id;
COMMIT;
");
$tr->execute();
$os = $tr->fetch(PDO::FETCH_ASSOC);
print_r($os);
您正在尝试在提交之前返回数据。请将此代码拆分为单独的statements@matigo请提出疑问…是的,这是一种方式,但我希望立即执行。。无论如何,谢谢你的回复。@UmeshGaire这是不可能的。您不能同时执行多个语句。实际上,我是通过START TRANSACTION代码>并以提交结束代码>。并没有问题,那个些语句将数据插入数据库,但并没有收到最后一个事务id。这是我的issue@UmeshGaire这确保了原子性,但查询仍然一个接一个地执行。
$connection->beginTransaction();
$tr = $connection->prepare("INSERT INTO data(name, address, dated) VALUES('Umesh', 'Kathmandu', NOW())");
$tr->execute();
$DataID = $connection->lastInsertId();
$tr = $connection->prepare("INSERT INTO activity(data_id, activity, dated) VALUES(:DataID, 'Test Implemented', NOW() )");
$tr->execute(['DataID' => $DataID]);
$ActID = $connection->lastInsertId();
$connection->commit();
print_r($DataID, $ActID);