PDA

View Full Version : سوال: دو دستور select و update همزمان



tecnocomputer2
دوشنبه 06 دی 1389, 15:18 عصر
سلام. اساتید محترم کد sql هست که همزمان دو دستور رو انجام بده؟ مثلا:

دستور یک:
Select * From tabel where id='200'

دستور دو:
Update tabel Set id=300

خلاصه دو دستور Update و Select تو یه دستور. ممنونم

parselearn
دوشنبه 06 دی 1389, 19:04 عصر
اگر ميخواين خروجي سلكت را آپديت كنيد
بايد از SubQuery استفاده كرد
فكر كنم دستور اين ميشه


Update tabel Set id=300 where id=(Select id From tabel where id=200)

tecnocomputer2
دوشنبه 06 دی 1389, 19:59 عصر
ممنونم ولی منظورم این نیست، دو دستور کاملا جدا هستن... میخام همزمان ارسال بشن.

- دو دستور در یک کوئری

MSN_Issue
دوشنبه 06 دی 1389, 20:11 عصر
این که مشکلی نداره ... !

$sql = "select * from tbl ; update tbl set id=13 ; ... " ;

tecnocomputer2
دوشنبه 06 دی 1389, 22:18 عصر
:متفکر: تا به حال به این فکر نکرده بودم!
تو phpMyAdmin میزنم کار میکنه ولی با این کد:


$res = mysql_query( "SELECT * FROM members WHERE id='100' ; update members set group_id='1' where id='134'") or die ( mysql_error());


این اررور رو میده:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; update members set group_id='1' where id='134'' at line 1

امیـرحسین
سه شنبه 07 دی 1389, 01:28 صبح
توابع *_mysql قابلیت multi-query ندارند. برای اجرای چند کوئری میتونید از توابع MySQLi استفاده کنید.
PhpMyAdmin هم که چنین کاری میکنه به این شکل عمل میکنه که کوئری ها رو براساس Separator جدا میکنه و جدا جدا اجرا میکنه.

Vahid Faraji
سه شنبه 07 دی 1389, 09:32 صبح
يه مفهومي داريم به نام transaction. براي اين كه كوئري ها با هم اجرا شوند يا در پي رخ دادن مشكل براي يكي، كلا اجرا نشود از transaction استفاده مي كنيم. به اين لينك مراجعه كنيد.
http://www.devarticles.com/c/a/MySQL/Using-Transactions-with-MySQL-4.0-and-PHP/

mtchabok
چهارشنبه 08 دی 1389, 14:16 عصر
واقعا این شدنی هس.
آخه توی اون آدرسی که دادید هم یک دستور رو ارسال کرد فقط ...
یه چیز دیگه آیا این کار توسط php انجام میشه و یا نه خود mysql مدیریت میکنه .. منظورم اینه که بار محاسباتی با کدوم سرور میشه server php یا server mysql ؟

امیـرحسین
پنج شنبه 09 دی 1389, 13:08 عصر
توسط Stored Procedures هم میشه چندین دستور رو با یک Call اجرا کرد. مثلا:

CREATE PROCEDURE test(_id INT(10), value1 VARCHAR(10), value2 INT(5))
BEGIN
UPDATE _table SET fld1=value1, fld2=value2 WHERE id=_id;
SELECT * FROM _table WHERE id=_id;
END;

و اینجوری اجرا شه:

CALL test(154, 'hello', 70);