Php 具有插入和获取输出错误的PDO事务语句

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;

我只是尝试将两个last\u insert\u id()作为输出输出,查询运行良好,并且成功地将数据插入到两个表中


但它在第
$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);