حذف مقادیر از MySQL با دستور DELETE

شنایی دقیق با این دستور از این لحاظ اهمیت دارد که اگر در تعیین پارامترهای آن اشتباهی انجام دهیم، ممکن است موجب حذف مواردی ناخواسته شویم.

شیوه نگارش دستور DELETE

نحوه استفاده از دستور DELETE در MySQL شباهت زیادی با سایر دستوراتی که تا این لحظه بررسی کرده ایم (مانند SELECT، UPDATE و…) دارد.

<?php
mysql_query("DELETE FROM table WHERE id = '2'")
or die(mysql_error());
?>

در مثال بالا ، ردیف یا ردیف هایی در دیتابیس که مقادیر ستون id آنها برابر عدد 2 باشد حذف خواهند شد، که اگر پارامتر WHERE استفاده نشود یا اینکه به اشتباه تعیین گردد، موجب حذف موارد ناخواسته میشود ، برای استفاده از دستور DELETE باید دقت کرد و قبل از هر چیز از اطلاعات حساس دیتابیس پشتیبان تهیه کرده و دستورات را نیز قبل از استفاده نهایی، حتی الامکان تست کرد.

فرض کنیم در دیتابیس خود در جدول users اسامی و مشخصات کاربران را در ستون های id، name، pass، age و… ذخیره کرده ایم، حال می خواهیم کاربرانی که نام آنها با حرف ب فارسی یا B لاتین شروع می شود را حذف کنیم :

<?php
$con = mysql_connect("localhost","root","")
or die(mysql_error());

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

$search_fa = 'ب';
$search_en = 'B';

$delete = mysql_query("DELETE FROM users WHERE name LIKE '$search_fa%' OR name LIKE '$search_en%'")
or die(mysql_error());

mysql_close($con);
?>
  • در دستور DELETE می توانیم از WHERE و پارامترهای وابسته به آن مانند OR ، AND ، LIKE و… استفاده کنیم.
  • هنگامی که در کنار دستور DELETE از WHERE و LIKE استفاده می کنیم، باید دقت کنیم که علامت % در ابتدا، انتها یا در هر دو سمت پارامتر، نقشی تعیین کننده در نحوه تفسیر دستورمان خواهد داشت که البته در این مورد در مباحث قبلی صحبت کرده ایم.

حال برای حذف چند مورد ابتدا باید یک فریم html در نظر بگیریم کهمقادیر را به صورت ارایه ارسال کند .

<form action="#" method="post">
<input type="checkbox" name="delete[]" value="1">
<input type="checkbox" name="delete[]" value="2">
<input type="checkbox" name="delete[]" value="3">
<input type="checkbox" name="delete[]" value="4">
<input type="submit" value="ارسال">
</form>
  •  علامت [ ] در قسمت نام فیلدها باعث می شود موارد به صورت یک آرایه به سرور ارسال شوند.
<?php
@$delete_array = $_POST['delete'];

$con = mysql_connect("localhost","root","")
or die(mysql_error());

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

foreach($delete_array as $key => $value){
    $delete = mysql_query("DELETE FROM users WHERE id = '$value' LIMIT 1")
    or die(mysql_error());
}

mysql_close($con);
?>

دریافت متغیر ارسال شده از طرف فرم HTML کافی است از روش های معمول (متد GET یا POST) استفاده کنید.

اگر از متغیر delete_array با دستور print_r خروجی بگیرید، کلیدها و مقادیر آرایه به صورت زیر خواهد بود.

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *