Невозможно передать @varibale из транзакции в журнал - PullRequest
0 голосов
/ 20 марта 2020

У меня есть этот код, который все делает правильно, я просто не могу передать значение @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);

1 Ответ

1 голос
/ 20 марта 2020

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);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...