Jump to content
php.lv forumi

2 komandas vienā querijā


Maaren

Recommended Posts

ttsbegin/ttscommit ir vispareizākā pieeja. Pārējie varianti var vnk mistiski nobrukt, pat ja kods 100% pareizs (mem-līki, out-of-memory un t.t. brīnumi)

 

ja izmanto vēl try/catch tad vispār pa smuko.

try
{
mysql_begin
php_func_inserti_1()
...
php_func_inserti_N()
mysql_commit
}
catch ..
{
mysql_rollback
}

Link to comment
Share on other sites

mazlet pielabojam ...
if (izpildaas_query1()) 
{
$id = mysql_query_id();
if (izpildaam_query2()) {
 echo "viss bumbaas";
}else { dzesham_no_mysql($id); echo "galiigi garaam"; }

}else echo 'query1 failed ..';

 

Klez, es zinu, es tieshi taa pat izdariju.. Laikam taa arii buus jaatstaaj, nav ko galvu lauziit..

 

$sqlactivatesuccesfull=mysql_query("insert into userlist(user,password,mail,sex,level,name,surname) values('$username','$dbpass','$mail','$sex','1','$firstname','$surname')");

if($sqlactivatesuccesfull){
$sqlunactivedelete = mysql_query("delete from inactive_user WHERE id='$inactiveid'");
if($sqlunactivedelete){
echo('viss ok!');
}
}

 

 

kas tās tāda transakcijas ir?

Edited by Maaren
Link to comment
Share on other sites

  • 2 weeks later...

Maaren, kādu storage engine izmanto tabulām, 'show table status' to paraadīs zem Type? Cik lielas tev ir tabulas, ja downtime nav kritisks, tad var alterot tabulas uz InnoDB un lietot transakcijas.

Ja neizpildās visi no query'jiem, tad transakcija rollback'ojas. Tavā gadījumā transakcijas ir vissaprātīgākais variants :)

BEGIN

insert into userlist(user,password,mail,sex,level,name,surname) values('$username','$dbpass','$mail','$sex','1','$firstname','$surname')

delete * from inactive_user WHERE id='$inactiveid

COMMIT

Link to comment
Share on other sites

×
×
  • Create New...