无法将事务中的@varibale 传递到日志中

Unable to pass @varibale from transaction into log

我有这段代码可以正确执行所有操作我只是无法将@new_spec_id 值传递给write_MySQL_log。 当前代码只是将 @new_spec_id 写入日志函数。 完全奇怪,因为我将 @new_spec_id 值正确传递给其他查询。如果我把它改成 $spec_id 同样的东西。它只是将其写为文本 $spec_id.

我在其他页面上有类似的东西,我可以将 $spec_id 传递到日志中。

mysqli_query($con,"START TRANSACTION");

     $a1 = "SELECT @new_spec_id:=COALESCE(MAX(spec_id),0) FROM SPEC;";
     $query1 = mysqli_query($con, $a1);
     write_mysql_log("Izrađena specifikacija ID: @new_spec_id", $db);

     $a2 = "UPDATE SPEC SET spec_iznos = '$value' WHERE spec_id = @new_spec_id;";
     $query2 = mysqli_query($con, $a2);    

     if ($a1 and $a2) {
         mysqli_query($con,"COMMIT");
     } else {        
         mysqli_query($con,"ROLLBACK");
     };

我试图定义它,但以太币不起作用。

     $log = "@new_spec_id";
     write_mysql_log("Izrađena specifikacija ID: $log", $db);

编辑: 让它与另一个 SELECT...

一起工作
$sql = "SELECT MAX(spec_id) AS spec_id FROM SPEC";
     $result = $con->query($sql);
   // output data of each row
     while($row = $result->fetch_assoc()) {
       write_mysql_log("Izrađena specifikacija ID: " . $row["spec_id"], $con);

PHP 无法直接访问 SQL 变量。您需要将查询结果提取到 PHP 变量中。

mysqli_query($con,"START TRANSACTION");

$a1 = "SELECT @new_spec_id:=COALESCE(MAX(spec_id),0) AS new_spec_id FROM SPEC;";
$query1 = mysqli_query($con, $a1);
if ($query1) {
    $row = mysqli_fetch_assoc($query1);
    $new_spec_id = $row['new_spec_id'];
    write_mysql_log("Izrađena specifikacija ID: $new_spec_id", $db);

    $a2 = "UPDATE SPEC SET spec_iznos = '$value' WHERE spec_id = @new_spec_id;";
    $query2 = mysqli_query($con, $a2);    
} else {
    $query2 = null;
}

if ($query1 and $query2) {
    mysqli_commit($con);
} else {        
    mysqli_rollback($con);
};