Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.801 pregleda

Najnovija ↓

ODBC Transations nad vise upita ! 25.09.2009. u 14:46 · pre 208 meseci #1
Da li je moguce uraditi u nekoliko upita nad bazom i da se svi nadju u transakciji, primer:

Code:

odbc_autocommit(false);

odbc_exec($conn, $query1);
odbc_exec($conn, $query2);
odbc_exec($conn, $query3);
odbc_exec($conn, $query4);

if(!odbc_commit($conn))
{
      odbc_rollback($conn);
}


Ako bilo koji od njih padne(prekine u izvrsavanju) da se uradi rollback,
jer sva 4 upita moraju da se izvrse inace sistem pada u vodu.

Hvala
Potpis
Every program is either trivial or it contains at least one bug.
Re: ODBC Transations nad vise upita ! 25.09.2009. u 15:21 · pre 208 meseci #2
Pa na dobrom si putu, samo ne treba da radiš commit, sve dok ne isproveravaš da li su svi upiti prošli, npr.:
Code:

$conn = odbc_connect($dsn, $user, $pass);

odbc_autocommit($conn, false);

$errors = 0;

if (!odbc_exec($conn, $query1)) { $errors++; } 
if (!odbc_exec($conn, $query2)) { $errors++; } 
if (!odbc_exec($conn, $query3)) { $errors++; } 
if (!odbc_exec($conn, $query4)) { $errors++; } 

if ($errors == 0) {
      odbc_commit($conn);
}
else {
      odbc_rollback($conn);
}
Re: ODBC Transations nad vise upita ! 25.09.2009. u 21:23 · pre 208 meseci #3
Druze hvala, tvoja resenje je sigurnije.

P.S. Dovbar ti je sajt, samo napred.
Potpis
Every program is either trivial or it contains at least one bug.
Re: ODBC Transations nad vise upita ! 09.10.2009. u 11:26 · pre 207 meseci #4
Citat:
Nikola Poša:
Code:

$conn = odbc_connect($dsn, $user, $pass);

odbc_autocommit($conn, false);

$errors = 0;

if (!odbc_exec($conn, $query1)) { $errors++; } 
if (!odbc_exec($conn, $query2)) { $errors++; } 
if (!odbc_exec($conn, $query3)) { $errors++; } 
if (!odbc_exec($conn, $query4)) { $errors++; } 

if ($errors == 0) {
      odbc_commit($conn);
}
else {
      odbc_rollback($conn);
}


Ovako funkcionise kada radim Javu i mySQL, ali PHP i ODBC kombinacija ne radi.
Komanda
Code:

odbc_autocommit($conn, false);

Uvek vraca TRUE upiti se 'commit-uju' jer je uvek autocommit(TRUE), jednostavno ne mogu da
ga nateram da mi uradi autocommit = FALSE.
Da li jos neko koristi transakcije u PHP-u, jer bez njih necu moci, u suprotnom prelazim na
drugi alat. U Javi ovo radi kao podmazano !
Potpis
Every program is either trivial or it contains at least one bug.
Re: ODBC Transations nad vise upita ! 09.10.2009. u 16:47 · pre 207 meseci #6
U pitanju je Advantage Database Server, koji cak ima i svoj driver za PHP ali ja nisam uspeo da ga napravim,
pa sam krenuo sa ODBC-om.
Probacu prvo sa PDO da vidim da li ide, pa cemo videti dalje.
Potpis
Every program is either trivial or it contains at least one bug.
Re: ODBC Transations nad vise upita ! 09.10.2009. u 19:34 · pre 207 meseci #7
PDO radi posao !

Potrebno je u PHP.ini odkomentarisati linije za PDO drajvere za zeljenu bazu podataka.
Ja sam to uradio samo za pdo_odbc.dll
Primer:
Code:

<?php
/* Konekcija na bazu preko ODBC drajvera */
$dsn = 'odbc:MojDSN';
$user = 'AdsSys';
$password = '';

try {
   $conn = new PDO($dsn, $user, $password);     
} catch (PDOException $e) {
   echo 'Connection failed: ' . $e->getMessage();
}

try{
         $conn->beginTransaction();      
         $sql1 = "Insert into klijenti(kl_sifra, kl_sifkom, kl_tip) values('101', '000017', '1')";    
         $sql2 = "Insert into klijenti(kl_sifra, kl_sifkom, kl_tip) values('102', '000018', '2')";    

         $conn->query($sql1);
         $conn->query($sql2); 
  
         $conn->commit();
}
catch (Exception $e) {
  print 'Transakcija nije izvrsena!';
  $conn->rollBack();
}


@Nikola, hvala na sugestijama

Srecno PHP-ovci
Potpis
Every program is either trivial or it contains at least one bug.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme