مشکل همزمانی اجرای 2 query یا منطق برنامه!!!

travel000

New Member
سلام.
1جدول اعضا دارم وقتی می خام عضوی بهش اضافه کنم اول select میکنم که کسی دیگه اون id را نداشته باشه اگه query select چیزی برنگردوند عضو جدید را insert میکنم!
حالا اگه همزمان دو نفر بخواهند با یک id یکسان عضو شوند چی میشه؟(تراکنش می خایم؟؟)

یه سوال دیگه ؟!
شرط انجام insert اینه که وقتی از جدول اعضا select کردم که آیا چنین id وجود دارد ، Query مربوط به این select چیزی برنگردونه یعنی مثلا اگه mysql_num_rows($result ) == 0 بود insert کن.
PHP:
  $query= "select id from member where id='$nam'";
$result=mysql_query($query,$db);
$num=mysql_num_rows($result);

if($num==0)
{
    echo "<br>"."insert enable"."<br>";
//$query2 = insert .....
    $result2=mysql_query($query2,$db);
    if( !$result2)echo "not insert."<br>";
}
else     
{
    echo "<br>"."id is not unique";
// echo $num;
}

حالا مشکل این جاس که اگه id تکراری نباشه پس از انجام insert از بلوک if ، بلوک else را هم اجرا می کنه و در واقع فقط پیام های بلوک else را چاپ می کند و دلیلش هم اینه که چک کردم مقدار $num را 1 کرده!!!

گیج شدم! یعنی ابتدا شرط برقرا شده insert کرده سپس شرط یعنی همان مقدار $num (با اضافه شدن رکورد به جدول) فرق کرده شده 1 و در نتیجه بلوک else اجرا شده؟!!!!!!!!!!!!!
 

travel000

New Member
حالا یه چیز جالب اینک اگه $result2 = mysql_query($query2,$db); را از بلوک if حذف کنم ! همه چیز درست میشه یعنی منطقی میشه! یعنی وقتی هیچ id را پیدا نکنه $num (تعداد رکورد بازیابی شده ) هم صفر شده و پیغام های مربوط به بلوک if را چاپ می کنه! و هنگامی که id تکراری باشه $num (تعداد رکورد بازیابی شده ) هم مخالف 0 شده و پیغام های مربوط به بلوک else را چاپ می کنه!
وقتی کد بالا را حذف نکنیم به هیج وجه در هیچ حالتی پیغام های مربوط به بلوک if را چاپ نمی کنه! در حالی که داده ها را به جدول اضافه میکنه!!(یعنی دستور insert اجرا میشه ولی سایر دستورات آن بلوک نه!! )
 

Masoud1365

مدیر انجمن
اگر دقیقا کدهات همینهاست یه اررور سینتکس داشت !
PHP:
    echo '<br>insert enable<br>';
//$query2 = insert .....
    $result2=mysql_query($query2,$db);
    if( !$result2)echo 'not insert.<br>';
اینو چک کن اگر درست نشد بگو تا کدهات رو از نظر منطقی دقیق چک کنیم.
 

travel000

New Member
اول تشکر.

نه اشکال از syntax نسی! میدونم این کد که گذاشتم مشکل داشت تو رشته ها! ولی نه! فکر کنم منطق برنامه درس کار نمی کنه!
آخه مگه میشه مقدار mysql_num_rows($result) تغییر کنه همین طوری؟!!!!!

کمک!(مخصوصا شما که ظاهرا همشهری هستی)!!
 
PHP:
$query = "select `id` from `member` where `id`='$nam';";
$result = mysql_query($query,$db);
$num   = mysql_num_rows($query);

if($num == 0)
{
     echo "<br>"."insert enable"."<br>";
     //$query2 = insert .....
     $result2 = mysql_query($query2,$db) or die("not insert.<br />");
}
else     
{
    echo "<br>id is not unique";
    // echo $num;
}
 
آخرین ویرایش:

Masoud1365

مدیر انجمن
به نظر که برنامه مشکل منطقی نداره آخه اگر که بلوک if اجرا بشه به هیچ وجه نباید بلوک else اجرا بشه اگر میشه دقیقا کدی که نوشتید رو بزارید.
 

travel000

New Member
PHP:
$query = "select `id` from `member` where `id`='$nam';";
$result = mysql_query($query,$db);
$num   = mysql_num_rows($query);

if($num == 0)
{
     echo "<br>"."insert enable"."<br>";
     //$query2 = insert .....
     $result2 = mysql_query($query2,$db) or die("not insert.<br />");
}
else     
{
    echo "<br>id is not unique";
    // echo $num;
}


یعنی میگن به رشته حاوی query گیر میده!!
 

travel000

New Member
1 تاپیک جدید می زنم وکل برنامه را می ذارم توش!!!

چه بازی در اورده این insert!
 

travel000

New Member
کمک کمک! insert میکنه ولی میگه نکردم!!

ببخشید تاپیک جدید زدم چون احساس کردم مطلب را باید از این حالت کلی بودن در اورد و تو اون تاپیک کل برنامه و مشکلش را گفتم ! اگه راهنمایی کنید خیلی ممنون میشم. حالا این تاپیک را چیکار کنم با تجربه تر ها؟!
 

جدیدترین ارسال ها

بالا