2014-09-04 129 views
1

该代码对存储在$ in中的所有查询执行事务。例如 $ in =“Query1; Query2; Query3;”mysql_query(“ROLLBACK”);不起作用

当其中一个出现故障,将被回退,但没有效果,并且没有任何错误插入到数据库

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
    if(! $conn) 
    { 
     die('ERR'); 
    } 

    mysql_select_db('db445123652'); 

    mysql_query("START TRANSACTION"); 


    $strlen = strlen($in); 

    $ini = 0; 

    for($i = 0; $i <= $strlen; $i++) { 
     $char = substr($in, $i, 1); 

     if($char == ';') 
     { 

      $resul = mysql_query(substr($in, $ini, $i)); 


      if(!$resul) 
      {     
       echo mysql_error(); 
       mysql_query("ROLLBACK"); 
       echo 'Rollback'; 
       break; 

      } 
      else{ 

      $ini = $i + 1; 

      } 


     } 

    } 


    if($i==($strlen+1) && $resul) 
    { 
     echo 'OK'; 
     mysql_query("COMMIT"); 

    } 

数据库是在1 & 1主机查询和我通过存取权限phpMyAdmin的。

+0

您是否使用InnoDb引擎? – Benz 2014-09-04 07:27:19

+0

我不是那个正在使用的引擎,因为它是在主机中雇用的数据库。我会尽力得到这些信息。 – user3745618 2014-09-04 07:36:45

+0

引擎是MyISAM。 – user3745618 2014-09-04 07:49:11

回答