2013-08-12 2 views
5

Начальная транзакция не определена в mysql. Im фактически использует его для запуска нескольких запросов в моем коде для перемещения строки из одной таблицы в другую. Большая помощь будет оценена. Хорошо, мой вопрос: почему мой Begin_transaction() не определен?Начало Сделки не определен

<?php 
    If(isset($trade_id)){ 
      $trade_id= $_GET['trade_id']; 
    } 
    require_once('connect.php'); 
    $mysqli = new mysqli($database_hostname, $database_username, $database_password, $database_name) or exit("Error connecting to database"); 
    try { 
     // First of all, let's begin a transaction 
     $mysqli->begin_transaction(); 

     // A set of queries; if one fails, an exception should be thrown 
     $mysqli->query("INSERT INTO `trade_history1` (session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit, profitandloss, dateclose, close) 
     SELECT session_id, trade_id, selection, date, type, size, bidprice, offerprice, stoploss, takeprofit, profitandloss, dateclose, close 
     FROM `opentrades` 
     WHERE `trade_id` = " . $tradeid); 
     $mysqli->query("DELETE FROM `opentrades` WHERE `trade_id` = " . $trade_id); 

     // If we arrive here, it means that no exception was thrown 
     // i.e. no query has failed, and we can commit the transaction 
     $mysqli->commit(); 
     $_SESSION['message'] = 'Successfully deleted'; 
    } catch (Exception $e) { 
     // An exception has been thrown 
     // We must rollback the transaction 
     $_SESSION['message'] = 'Unable to delete'; 
     $mysqli->rollback(); 
    } 
    $mysqli->close(); 

      // if we successfully delete this, we 
      if ($successfullyDeleted) { 
       $_SESSION['message'] = 'Successfully deleted'; 
      } else { 
       $_SESSION['message'] = 'Unable to delete'; 
      } 

      header('Location: js.php'); 

    ?> 
+0

вы можете быть более ясно на требовании? – rags

+0

Вы забыли задать свой вопрос. – zerkms

ответ

4

$mysqli->begin_transaction(); должен быть $mysqli->autocommit(FALSE);

Установите этот флажок

http://www.php.net/manual/en/mysqli.commit.php

+0

Это заставило ошибку уйти, но удаление не происходит, что может быть проблемой? –

+0

Для этого вам нужно проверить запрос на удаление –

+0

, ему удалось прочитать запрос на удаление, но он не запускает запрос вставки. –

-2

Вы можете использовать этот код я испытал.

Объектно-ориентированный стиль

$cid->multi_query('start transaction;'); 
$cid->multi_query("insert into demo values('1','Pankaj','9031251290')"); 
$cid->multi_query('commit;'); 

Процедурный стиль

mysqli_query($link, "start transaction;"); 
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)"); 
mysqli_query($link, "commit;"); 
+0

Почему 'multi_query'? –

+0

Фактически я выполняю несколько запросов за раз, поэтому я использую это. – pankaj

Смежные вопросы