آگهی
article

به روز رسانی ردیف ها در MySQL با UPDATE

mysql-update

یکی دیگر از دستورات مربوط به مدیریت اطلاعات در MySQL، دستور UPDATE است که پس از INSERT INTO و SELECT FROM می تواند بیشترین کاربرد را داشته باشد، فلسفه پیدایش و تعریف این دستور نیز به این جهت است که بتوانیم بدون حذف ردیف های موجود، اطلاعات آنها را به روز کنیم، به طور مثال فرض کنید اسامی افرادی را در یک جدول به همراه شماره تلفن آنها ذخیره کرده ایم و اکنون می خواهیم بدون اینکه ردیف مورد نظر حذف شود، تنها شماره تماس فرد را تغییر دهیم، یعنی اطلاعات قبلی مربوط به شماره تماس را حذف و اطلاعات جدید را جایگزین آن کنیم، در این گونه موارد است که دستور UPDATE کاربرد دارد، در ادامه به صورت جزئی تری با این دستور آشنا خواهیم شد.

شیوه نگارش (syntax) دستور UPDATE


شیوه نگارش (syntax) و نحوه استفاده از دستور UPDATE در MySQL بسیار ساده و کاربردی است، در واقع مانند سایر دستورهای مربوط به پایگاه داده، از جمله INSERT INTO و SELECT FROM، دستور UPDATE نیز از عناصر تعریف شده و خاص خود پیروی می کند که عبارتند از SET،UPDATE و WHERE، عنصر UPDATE بخش کلیدی پرس و جو، SET عملیات مورد نظر و WHERE ردیف هایی است که تحت تاثیر قرار می گیرند، به مثال زیر توجه کنید.
<?php
mysql_query("UPDATE tb_name SET tel_column='+98**********', age_column='33' WHERE user_column='ali'")
or die(mysql_error());
?>
در مثال بالا، از جدول فرضی tb_name، ستون های tel_column و age_column را به روز رسانی کردیم در جایی که ردیف یا ردیف های ستون user_column برابر مقدار فرضی ali باشد، به این ترتیب اطلاعات قبلی ذخیره شده در ردیف ها حذف و با مقادیر جدید به روز رسانی می گردند، بدون اینکه خود آن ردیف ها حذف شوند.
نکته: برای به روز رسانی چندین ستون با یک دستور UPDATE و جداسازی آنها، از علامت , به صورتی که در مثال آمده است استفاده کنید.

یک مثال کاربردی با دستور UPDATE


برای آشنایی بیشتر با کاربرد دستور UPDATE در MySQL، این قسمت از آموزش را با یک مثال کاربردی به پایان می بریم؛ فرض کنید اسامی کاربران سایت خود را در جدولی به نام users ذخیره کرده ایم که این جدول دارای چند ستون با نام های username، password، status و ... است، حال می خواهیم این امکان را به کاربران بدهیم تا بتوانند کلمه عبور خود را تغییر دهند، در چنین شرایطی می توان با استفاده از دستور UPDATE این کار را به راحتی انجام داد که در زیر یک نمونه از آن را ملاحظه می کنید.
<?php
$con = mysql_connect("localhost","root","")
or die(mysql_error());

mysql_select_db("test")
or die(mysql_error());

$update = mysql_query("UPDATE users SET password='$new_pass' WHERE username='$user_name' AND status='online'")
or die(mysql_error());

mysql_close($con);
?>
توضیح:
- دقت کنید، دستورات MySQL در اکثر مواقع، قبل از هر چیز باید توسط کدهای php کنترل شده و با هدف مشخصی استفاده گردند، به این معنی که هیچ زبان برنامه نویسی خود به خود نباید کاری انجام دهد بلکه تنها باید به عنوان یک ابزار در اختیار برنامه نویس باشد تا منظور او را به مفسر سیستم تفهیم کند، از این رو باید بدانید که کی و کجا از چه دستوری می توانید استفاده کنید، البته این موضوع تا حدود زیادی به تمرین و تجربه نیز بستگی دارد.
- پرس و جوی فرضی بالا اطلاعات کلمه عبور یک کاربر را به روز رسانی می کند، همان طور که ملاحظه می کنید از WHERE و AND برای اطمینان و محدودسازی ردیف های مورد نظرمان استفاده کرده ایم، همچنین از متغیرهایی برای مقادیر در دستور استفاده شده است که می توانند به فرض از یک فرم HTML و با متد POST دریافت شده باشند.
- همان طور که گفتیم، قبل از اجرای پرس و جوهای مربوط به دیتابیس، می توانید عملیات کاربر را با برنامه نویسی php کنترل و مدیریت کنید، به فرض از اعتبار سنجی با if و else یا isset استفاده کرده و سپس اجازه اجرای پرس و جو را بدهید، یا از دیگر قابلیت های php با توجه به هدف و برنامه خود استفاده کنید.
sectionدسته بندی: آموزش مقدماتی » MySQL
related مطالب بیشتر:
» محدودسازی، گروه بندی و مرتب سازی نتایج در MySQL
» استفاده از WHERE در پرس و جوی MySQL
» استفاده از JOIN و ساخت پرس و جوی ترکیبی در MySQL
» اتصال PHP به MySQL با اکستنشن MySQLi
» ساخت دیتابیس، جدول و ستون با دستور CREATE در MySQL
commentنظرات (۳۵ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: mehdi
زمان: ۰۳:۰۳:۳۴ - تاریخ: ۱۳۹۴/۰۵/۱۲
سلام
اگر چند تا فیلد داشته باشیم و بخواهیم آنها رو آپدیت کنیم چی ؟
مثلا شما یه پسورد داشتی که آپدیتش کردی حالا من چند تا فیلد نام و نام خانوادگی و . . . دارم که با توجه به کد ملی می خواهم آپدیتشون کنم .
اگر یه راهنمایی کنید ممنون می شم
پاسخ: 
سلام
اگر به مثال اول این آموزش دقت کنید، دو فیلد با علامت , از هم تفکیک شده اند، همین روال برای هر تعداد فیلد که داشته باشید می تواند استفاده شود (یعنی با علامت , جداسازی کنید).
نویسنده: امیرهادی
زمان: ۱۴:۵۷:۴۲ - تاریخ: ۱۳۹۶/۰۴/۲۶
سلام به شما
دستوری هست که بعد از هر تغییر (مثلا UPDATE یا INSERT ) یک واحد به فیلد فرضی ID2 اضافه کند؟
مثلا ما یک فیلد ID داریم که بعداز INESERT کردن به صورت اتوماتیک یک واحد بیشتر میشود. ولی موقع UPDAT شدن بدون تغییر باقی میماند. الان میخوام یک فیلدر دیگر داشته باشم (مثلا ID2) که موقع آپدیت کردن هم افزایش پیدا کند. من الان موقع آپدیت سطرها، متغیر ID2 را دریافت میکنم و یک واحد بهش اضافه میکنم و دوباره به دیتابیس وارد میکنم.
دنبال دستورش هستم
پاسخ: 
با توجه به توضیحات باید سورس کدهای برنامه بررسی شوند، به همان صورت که در هنگام INSERT یک واحد به ستون مورد نظر اضافه می شود، می توان همان کد را در قسمت UPDATE نیز قرار داد، در واقع ظاهر کد در برنامه شما وجود دارد منتها باید آن را پیدا کنید و در قسمت UPDATE نیز درج نمائید که مستلزم تسلط بر PHP و MySQL است.
نویسنده: کاظم
زمان: ۱۸:۱۶:۳۸ - تاریخ: ۱۳۹۶/۰۶/۲۳
سلام
ممنون
چطور میشه بعد از ویرایش در صفحه مربوطه کنار رکورد مورد نظر یه دکمه ظاهر بشه و همچنین رنگ رکورد تغییر یافته مثلا قرمز بشه و بعد از ok کردن دکمه رنگ سبز بشه ؟
پاسخ: 
این موارد باید با برنامه نویسی اعمال شوند، متاسفانه توضیح ساده و کوتاهی قابل ارائه نیست!
نویسنده: om
زمان: ۱۱:۵۷:۵۱ - تاریخ: ۱۳۹۷/۰۴/۰۳
سلام .
ببخشید من برای طراحی سایت صرافی نیاز دارم تا یک لینکی به یکی از کاربران بدم تا بدون نیاز به وارد شدن در پنل وردپرس و .... این امکان رو داشته باشه تا با وارد کردن پسورد قیمت ارزها رو از طریق اون فرم بتونه تغییر بده.
امکانش هست راهنمایی بفرمایید چگونه این کار ممکنه؟
پاسخ: 
قاعدتا برای این کار باید کدنویسی کنید! یعنی یک برنامه کوچک با فایل های جداگانه بنویسید که از دیتابیس وردپرس استفاده کند، اگر کاربر وارد این برنامه نشده باشد، فرم ورود را نمایش دهید و اگر کوکی و سشن معتبر باشد، فرم ویرایش را در خروجی داشته باشید، پس از ارسال فرم نیز ردیف های مد نظر با مقادیر ارسالی کاربر به روز شوند.
نویسنده: مصطفی
زمان: ۱۴:۳۴:۵۵ - تاریخ: ۱۳۹۸/۰۹/۰۶
سلام . وقتی داریم یک رکورد رو آپدیت میکنیم ، چطوری بفهمیم کدوم ستون ها داره آپدیت میشه و اونارو بفرستیم به یک view ؟
پاسخ: 
منظورتان دقیقا مشخص نیست؟! قاعدتا ستون ها در پرس و جوی UPDATE مشخص هستند اما اگر منظور دریافت آخرین ردیف هایی است که با دستور جاری آپدیت شده اند تا آنجا که اطلاع داریم MySQL متدی برای این منظور در نظر نگرفته و در واقع نتیجه هر پرس و جو به محض اتمام اجرا به مفسر PHP برگردانده می شود و تنها در این لحظه می توانیم تعداد نتیجه را با متدهایی مانند mysqli_affected_rows دریافت و چاپ کنیم، با توجه به این حالت یا باید پرس و جوی آپدیت هر ردیف به صورت جداگانه (به فرض در حلقه for یا foreach) اجرا شود، یا با یک پرس و جوی SELECT دیگر وضعیت آخرین آپدیت ستون ها به فرض با در نظر گرفتن ستون تاریخ و زمان دریافت شود.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




3 × 2
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form مجید بیگلوئی
در:
با سلام میخوام فایل پیوست بسازم برای اسکریپت وبلاگ از کد زیر استفاده میکنم تا فایل را آپلود و اطلاعات را به دیتابیس ارسال...
۱۰:۰۲:۵۸ ۱۳۹۸/۱۲/۰۶

form پیمان نقی پور
در:
سلام میخواستم بدونم فیلتر نویسی بورس هم با همین زبان جاوا انجام میشه؟ چطور میشه شرطی تعیین کرد تا نتیجه فیلتر در هنگام...
۱۸:۲۱:۳۲ ۱۳۹۸/۱۲/۰۵

form mahdi
در:
سلام استاد ، css رو تسلط کامل دارم تا حدودیش هم به لطف شما و جاوا اسکریپت هم چند روزی میشه شروع کردم به آموزش...
۱۵:۴۸:۳۳ ۱۳۹۸/۱۲/۰۵

form amin
در:
با سلام آدرس مطالب سایت وبگو بعد از ای دی پست عنوان فارسی هست ولی زمانی که به سورس کد پست نگاه میکنیم قسمت فارسی...
۱۴:۵۹:۴۴ ۱۳۹۸/۱۲/۰۵

form mahdi
در:
سلام استاد ، لینک آموزش مقدماتی جاوا اسکریپت توی منوی بالایی خرابه ، به وظیفه شهروندیم عمل کردم :)
۱۵:۰۹:۰۰ ۱۳۹۸/۱۲/۰۴

form aseman
در:
با سلام . میخوام هر وقت توی تکس باکسم عدد 1 وارد شد در خروجی تگ p معادل حروفی یک رو بهم بده. مثلا:...
۱۴:۴۵:۲۹ ۱۳۹۸/۱۲/۰۴

form mahdi
در:
سلام استاد ، گذاشتمش توی این وبلاگ رمزش هم ******* هستش ، واقعیت فهمیدم که میشه درستش کرد ولی چجوریشو نفهمیدم :) خیلی ممنون...
۱۳:۲۰:۱۴ ۱۳۹۸/۱۲/۰۴

form mahdi
در:
سلام استاد، وبلاگ ندارم، اینا رو برای یادگیری و یه هدف دیگه دارم سوال میکنم، مطالب مرتبط رو پیدا کردم راهشو، فقط قسمت ارسال نظر...
۲۰:۱۵:۰۲ ۱۳۹۸/۱۲/۰۳

form نیما
در:
سلام. من میخوام با استفاده از یک input مقدار عددی رو از کاربر دریافت کنم و بعد از ضرب در عددی خاص که خودم تعیین...
۱۸:۰۷:۰۴ ۱۳۹۸/۱۲/۰۳

form وحید
در:
سلام وقت بخیر حدود شش ماه هست با فیلتر شکن کار میکنم به اسم Lightvpn. یک روز هست این خطا رو میده و...
۱۸:۰۰:۰۶ ۱۳۹۸/۱۲/۰۳

form mahdi
در:
سلام ، استاد شرمنده یه سوال دیگه هم داشتم مثل قبلی ، مطالب مرتبط که انتهای هر پست میاد رو چطوری با جاوا اسکریپت توی...
۲۳:۴۶:۲۳ ۱۳۹۸/۱۲/۰۲

form mahdi
در:
سلام استاد عزیز ، توی لوکس بلاگ میشه چیزی مثل پست های شاخص که توی وردپرس هست با جاوا اسکریپت درست کنیم که مثلا داخل...
۲۳:۱۴:۴۰ ۱۳۹۸/۱۲/۰۲

form mahdi
در:
سلام استاد ، بخش نظرات قالب لوکس بلاگ یعنی طرح کل صفحش رو چطوری دسترسی داشته باشیم که خودمون بتونیم طراحیش کنیم ؟ منظورم اینه...
۱۸:۱۱:۳۳ ۱۳۹۸/۱۲/۰۱

form علیرضا سهیلی
در:
سلام من وقتی میخوام شارژ بزنم این کد واسم میاد معنیش یعنی چی
۱۴:۳۳:۱۴ ۱۳۹۸/۱۲/۰۱

form mahdi
در:
سلام استاد ، فهمیدم چطوریه نیازی به پاسخ نیست، چقدرم ساده بود :) مرسی
۰۹:۴۸:۴۹ ۱۳۹۸/۱۱/۳۰
آگهی