PDA

View Full Version : مشکل در insert کردن در MySQL



mfaridi
یک شنبه 25 مرداد 1394, 13:42 عصر
سلام
ببخشید به یه مشکل برخوردم عجیب من با php به mysql وصل شدم
حالا تو یه پرس جو چک میکنم که همچین داده ای قبلا ثبت شده یا نه
اگه ثبت نشده بود
insert میکنهم
اگه شده
update میکنم
مشکل عجیب این هست که گاهی وقته که سرور شلوغ میشه مال یه کار بر دوتا insert پشت سر هم میخوره نمیدونم مشکل از کجا میتونه باشه ممنون
این هم کد

$tt = new Databasee();
$tt->query("SELECT * FROM `footbal_forecast` WHERE `id_lig` = $id_lig AND `id_game` = $id_game AND `id_user` = $id_user;");
$m = $tt->resultset();
if(sizeof($m) > 0){
//echo "gablan bood";
$qurey_update = "UPDATE `footbal_forecast` SET
`id_player`=$id_player,`gool1`=$gool_1,`gool2`= $gool_2 WHERE
`id_lig` = $id_lig AND `id_game` = $id_game AND `id_user` = $id_user ;";
$tt->query($qurey_update);
$tt->execute();
}else{
$qurey = "INSERT INTO `footbal_forecast`(`id_lig`, `id_game`, `id_user`, `id_player`, `gool1`, `gool2`) VALUES
($id_lig,$id_game,$id_user,$id_player,$gool_1,$goo l_2);";
$tt->query($qurey);
$tt->execute();
}

arenaw
یک شنبه 25 مرداد 1394, 14:59 عصر
احتمال میدم که به خاطر کند بودن این روش هستش. ممکنه یک کاربر یه اطلاعاتی رو چک کنه و تو خط 4 متوجه بشه که چنین رکوردی موجود نیست، پس Insert میکنه. اما ممکنه درست همین موقع قبل از Insert، یه نفر دیگه هم همزمان چک کنه و سیستم به اون هم جواب میده که چنین رکوردی نیست! کلا بهتون پیشنهاد میکنم به جای استفاده از این روش که "چک کنید که اول چنین رکوردی موجود هست یا نه و بعد از فهمیدن عملیات Insert یا Update رو انجام بدین" ، از یکی از دو دستور Replace و Insert ... On Duplicate استفاده بکنید.

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
https://dev.mysql.com/doc/refman/5.0/en/replace.html

mfaridi
یک شنبه 25 مرداد 1394, 15:40 عصر
سلام ببخشید ولی من جای دیگه فقط اطلاعات رو ثبت میکنم و نیازی به چک کردن نیست برا چت گاهی وقتا بجای یه insert بازم چنتا insert میشه چرا ؟؟