پاس کردن چند query به mysql_query()

bono056

Member
سلام
چرا یه همچین دستوری در php کار نمی کنه؟
کد:
$sql_query = "UPDATE table1 SET serial_num='AB101' WHERE id=101;UPDATE table1 SET serial_num='AB102' WHERE id=102;";
$db_result = mysql_query($sql_query);

برای اجرا کردن همچین کو-اری هایی چکار باید کرد؟ همچین کو-اری هایی رو اگه تو phpMyAdmin اجرا کنیم بدون مشکل اجرا میشن. کسی میدونه اونجا این موضوع چجوری هندل میشه؟ قبل از اجرا جدا میشن و بعد تک تک به تابع mysql_query پاس میشن یا یکجا؟
 

I.NoBody

Active Member
اگه از PHP5 به بالا استفاده مي كني، مي توني از mysqli_multi_query استفاده كني. در غير اينصورت نمي توني كاري بكني
 

jhoseini

Member
فکر میکنم، برای استفاده ازدستورات mysqli ، به جای mysql نیاز به تغییرات دیگه ای هم باشه
شما تست کردید؟

به هر حال من تا قبل این برای همچین مواردی command روا explode میکردم، با کارکتر `;`
 

I.NoBody

Active Member
فکر میکنم، برای استفاده ازدستورات mysqli ، به جای mysql نیاز به تغییرات دیگه ای هم باشه
بله.
اين دوستمون وقتي برن نحوه كار با تابع مذكور رو ياد بگيرن، قائدتاً مثال هاي مربوطه رو مي خوننن.
البته حق با شماست. بايد مي نوشتم كه تغييرات ديگه رو هم بدن.
كلاً بهتره كلاس Mysqli رو مطالعه كنن
 

bono056

Member
اصل ماجرا این که من میخوام یه سری اطلاعات رو از یه فایل xml پرس کنم و تو یه جدول mysql بریزم. تعداد رکوردهایی که هر دفعه داخل جدول میشن هم زیاده. برای INSERT مشکلی نیست، میشه هر چند تا رکورد رو با یه دستور insert کرد. برای update هم در بعضی موارد مشکلی نیست، ولی بعضی جاها باید بر هر رکورد یه update نوشت که تو تعداد رکوردهای بالا صفحه رو کند میکنه و بعضی موارد هم صفحه time out میشه و ....
کسی اگه ایده داره ممنون میشم بگه، مثالشم اینه:
در این حالت آپدیت مشکلی نداره:
کد:
UPDATE table1 SET flag='Yes' WHERE id=101;
UPDATE table1 SET flag='Yes' WHERE id=102;
UPDATE table1 SET flag='Yes' WHERE id=103;
==>
UPDATE table1 SET flag='Yes' WHERE id=101 OR id=102 OR id=103;

اما تو این حالت راهی یه نظرم نمیرسه:

کد:
UPDATE table1 SET serial_num='AB1044' WHERE id=101;
UPDATE table1 SET serial_num='AB1544' WHERE id=102;
UPDATE table1 SET serial_num='AB4444' WHERE id=103;
 

I.NoBody

Active Member
قبلاً هم گفتم. براي ورژني كه استفاده مي كني، فكر نمي كنم راهي باشه.
بهتره از همين روش كند استفاده كني. فقط time out رو زياد كن. مثلاً بذار 10000 ثانيه. احتمالاً پيش فرض 30 ثانيه هست
کد:
set_time_limit(10000);
 

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

بالا