2017-07-11 8 views
1

の確認:私は、私はプロジェクトファイルを持っている、と私は私の構文で悩みを持っている、例mysqli_multi_queryでINSERT()手続き

mysqli_query($connection,"START TRANSACTION"); 
$mysql_query = mysqli_multi_query($connection," 
    INSERT INTO `TABLE 1` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 1'); 
    INSERT INTO `TABLE 2` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 2'); 
    INSERT INTO `TABLE 3` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 3'); 
"); 
if(!$mysql_query){ 
    echo "Syntax MySQL: " . mysqli_error($connection); 
}else{ 
    do{ 
    // Store first result set 

    if ($result=mysqli_store_result($connection)){ 
     mysqli_free_result($result); 
    } 
    }while (mysqli_next_result($connection)); 
} 

IMPOSIBLEが、私は1つのMySQLのクエリが挿入に失敗した場合はロールバックしたい場合我々はこのクエリのために1つ1つをチェックできると思う、

事前に感謝!

+0

'ID'は' NULL'が、それは正しいアプローチ –

+0

ことに何の問題もなく、ちょうど私が私のプログラムを実行するために完璧にしたいとによって、私のクエリ1をチェックしません1 –

+0

@AlivetoDie、auto_incrementにする必要があります。 – Amir

答えて

0

それはこのようなものでなければなりません:

mysqli_autocommit($connection, FALSE); 
$mysql_query = mysqli_multi_query($connection," 
    INSERT INTO `TABLE 1` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 1'); 
    INSERT INTO `TABLE 2` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 2'); 
    INSERT INTO `TABLE 3` (`ID`, `VAL`) VALUES (NULL, 'NAMBAH 3'); 
"); 
    do{ 
    // Store first result set 

    if ($result=mysqli_store_result($connection)){ 
     mysqli_free_result($result); 
    } 
    }while (mysqli_next_result($connection)); 
    if($mysqli_errno($connection)){ 
     $mysqli_commit($connection); 
    }else{ 
     echo "MySQL Error: " . mysqli_error($connection); 
     $mysqli_rollback($connection); 
    }