Использование транзакций в PHP и MySQL

Я изучаю PHP. Этот процесс фиксации и отката выполняет задачу в каждой строке. Как я могу зафиксировать и откатить все сразу?

<?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

Решение

вам нужно совершить из цикла, я использовал $bool чтобы увидеть, есть ли где-то $result не правда

это будет выглядеть примерно так:

редактировать:
выход из цикла, когда что-то не так, поскольку вам не нужно продолжать зацикливаться на других элементах.

$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

Другие решения

Других решений пока нет …