2017-08-16 6 views
0

Je suis un apprenant de PHP. Ce processus de validation et de restauration effectue la tâche à chaque ligne. Comment puis-je valider et annuler tout à la fois?Utilisation des transactions en PHP et MySQL

<?php 
$con = mysql_connect('localhost','user', 'abcdefg'); 
if(!con) 
{ 
    echo "Can't connect to db."; 
}else { 
    mysql_select_db('test'); 
} 

if(!file_exits('test.csv') 
{ 
    echo "Can't find the file."; 
} 

$ar_1 = file('test.csv', FILE_IGNORE_NEW_LINES); 

foreach ($ar_1 as $ar1) 
{ 
    $test = explode(",", $ar1); 
    $sql = "SELECT * FROM DB WHERE CD = '$test[0]'"; 
    $result = mysql_query_($sql); 
    $sql = "INSERT INTO DB(CODE) VALUES ('$test[0]');"; 
    $result = mysql_query($sql); 
    if($result === true) 
    { 
     //Commit 
     $sql = "commit"; 
     mysql_query($sql); 
     echo "Committed"; 
    }else { 
     //Rollback 
     $sql = "rollback"; 
     mysql_query($sql); 
     echo "Rollback"; 
    } 
} 
mysql_close($con); 
?> 
+0

Avez-vous reçu une erreur? Si oui, alors mentionnez-le ici. – Priyank

+0

déplace le commit et le rollback hors de la boucle, vous vous engagez dans le foreach! –

+0

Je n'ai pas eu d'erreur mais je veux commettre et annuler pour tout à la fois pas à chaque fois. – Manish

Répondre

0

vous devez vous engager hors de la boucle, j'ai utilisé $bool pour voir si quelque part il y a le $result n'est pas vrai

il ressemblera à quelque chose comme:

modifier: rupture à partir de la boucle lorsque quelque chose ne va pas car vous n'avez pas besoin de continuer à boucler vers d'autres éléments.

$bool = 1; 
     foreach ($ar_1 as $ar1) 
     { 
     $test = explode(",", $ar1); 

     $sql = "SELECT * FROM DB WHERE CD = '$test[0]'"; 
     $result = mysql_query_($sql); 

     $sql = "INSERT INTO DB(CODE) VALUES ('$test[0]');"; 
     $result = mysql_query($sql); 

     if($result === false) 
     { 

      //Rollback 
      $bool = 0; 
      $sql = "rollback"; 
      mysql_query($sql); 
      echo "Rollback"; 
      break; 
     } 

    } 
    if($bool == 1) 
    { 
     //Commit 
     $sql = "commit"; 
     mysql_query($sql); 
     echo "Committed"; 
    } 
    mysql_close($con); 
+0

Merci beaucoup. M'a beaucoup aidé. – Manish

+0

@Manish est ici un meilleur code, aussi, envisager de voter la réponse comme correcte –

+0

je voudrais apprécier et encore une fois merci code ci-dessus était très utile. – Manish