🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ مهرنوش مستوفی
حذف چندین شماره id با دستور delete
خانم عدیله ترکان حل شده توسط خانم عدیله ترکان

ممنون از تدریس عالی جناب دکتر آوند عزیز و گرامی... سوالی که داشتم اینه اگر بخوایم چندین شماره id رو که ترتیب خاصی هم ندارند در قالب دستور delete حذف کنیم، چطور باید دستورش رو بنویسیم من خودم براساس سرچ هایی که داشتم معمولا از دو حالت استفاده کرده بودن یکی اینکه id‌ها رو در قالب اپراتور IN به صورت گروهی حذف کنیم و دستوری که من استفاده کردم و البته جواب هم داد اینه که به ازای هر ID یه متغیر تعریف کردم و اونها رو از طریق اپراتور OR به شکل زیر حذفشون کردم... منتها زمانی از متغیر آرایه ای برای حذف شماره ID‌ها در تابع bind_param استفاده کردم که همه تو یه متغیر تعریف شن و حذف شن جواب نداد، کدی که برای من جواب داد اینه:

 

$users_id5 = 12;
$users_id6 = 13;
$sql = "delete from people where id = ? or id = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('ii',$users_id5,$users_id6);
$stmt->execute();

 

جناب دکتر آوند عزیز اگر محبت کنید و روشی رو ذکر بفرمایید که از طریق متغیر آرایه ای بتونم چندین id رو به صورت امن و از طریق توابع prepare و bind_param اعتبارسنجی کنم و حذفشون کنم ممنون میشم بزرگوار...

سلام.

بجای or‌های متوالی، از IN استفاده کنید.

کوئریو باید از روی آرایه خودتون تولید کنید:

$ids = [30, 32, 34];
$params = implode(',', array_fill(0, count($ids), '?'));
$stmt = $pdo->prepare(
    'DELETE
     FROM `tasks`
     WHERE `id` IN(' . $params . ')'
);
$stmt->execute($ids);

علت implode کردن آرایه اینه که کوئری یک string هست و شما باید در قالب یک رشته کوئریو تولید کنید.

خانم عدیله ترکان ۱۱ اردیبهشت ۱۳۹۹، ۱۰:۲۴

مثالی برای Mysqli:

$ids = [30, 32, 34];
$params = implode(',', array_fill(0, count($ids), '?'));
$stmt = $mysqli->prepare(
    'DELETE
     FROM `tasks`
     WHERE `id` IN(' . $params . ')'
);
$stmt->bind_param(str_repeat('i', count($ids)), ...$ids);
$stmt->execute();

 

بهترین پاسخ
خانم عدیله ترکان ۱۱ اردیبهشت ۱۳۹۹، ۱۱:۱۸

سلام خدمت اساتید  و دوستان گرامی

 

ممنونم از تدریس دکتر لقمان آوند .

حدف  چندین ایدی بطور متوالی در mysqli  که با استفاده از تابع  prepare بطور کامل حذف شده. و نحوه کار را  بطور کامل با  عکس  توضیح دادم امیدوارم مفید واقع بشه.

 

مبنع:

 حذف ایدی متوالی

 

موفق باشید.

 

شولان عبدالکریمی ۰۱ آذر ۱۳۹۹، ۱۳:۱۶