无法将事务中的@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);
};
我有这段代码可以正确执行所有操作我只是无法将@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);
};