Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ODBC Transations nad vise upita !

[es] :: PHP :: ODBC Transations nad vise upita !

[ Pregleda: 2007 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Cyberghost
Aleksandar Jovanović
Programer
S U M A D I J A

Član broj: 14674
Poruke: 813
91.150.76.*



+1 Profil

icon ODBC Transations nad vise upita !25.09.2009. u 13:46 - pre 177 meseci
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
Every program is either trivial or it contains at least one bug.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: ODBC Transations nad vise upita !25.09.2009. u 14:21 - pre 177 meseci
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);
}
 
Odgovor na temu

Cyberghost
Aleksandar Jovanović
Programer
S U M A D I J A

Član broj: 14674
Poruke: 813
79.101.88.*



+1 Profil

icon Re: ODBC Transations nad vise upita !25.09.2009. u 20:23 - pre 177 meseci
Druze hvala, tvoja resenje je sigurnije.

P.S. Dovbar ti je sajt, samo napred.
Every program is either trivial or it contains at least one bug.
 
Odgovor na temu

Cyberghost
Aleksandar Jovanović
Programer
S U M A D I J A

Član broj: 14674
Poruke: 813
91.150.76.*



+1 Profil

icon Re: ODBC Transations nad vise upita !09.10.2009. u 10:26 - pre 177 meseci
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 !
Every program is either trivial or it contains at least one bug.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: ODBC Transations nad vise upita !09.10.2009. u 13:30 - pre 177 meseci
Znam da je sa ODBC-om uvek bilo nekih bagova, ne znam zašto si se uopšte odlučio da ideš s njim... Kao alternativu, probaj nešto sa PDO-om: http://us3.php.net/manual/en/pdo.transactions.php
 
Odgovor na temu

Cyberghost
Aleksandar Jovanović
Programer
S U M A D I J A

Član broj: 14674
Poruke: 813
93.87.105.*



+1 Profil

icon Re: ODBC Transations nad vise upita !09.10.2009. u 15:47 - pre 177 meseci
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.
Every program is either trivial or it contains at least one bug.
 
Odgovor na temu

Cyberghost
Aleksandar Jovanović
Programer
S U M A D I J A

Član broj: 14674
Poruke: 813
93.87.105.*



+1 Profil

icon Re: ODBC Transations nad vise upita !09.10.2009. u 18:34 - pre 177 meseci
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
Every program is either trivial or it contains at least one bug.
 
Odgovor na temu

[es] :: PHP :: ODBC Transations nad vise upita !

[ Pregleda: 2007 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.