حذف تمام جداول بانک اطلاعاتی با PHP
اگر شما هم بخواهید بدون اینکه به phpmyadmin وارد شوید تمام جدولهای بانک اطلاعاتی خود را حذف کنید نیازمند قطعه کدهای پی اچ پی خواهید شد؛ شاید بگویید خب اول اول با همان phpmyadmin این کار را انجام میدهیم!! فرض کنید یک پروژه دارید که به شما تنها دسترسی FTP داده شده و یک بانک اطلاعاتی برای شما ساخته شده است حالا شما بدون دسترسی مستقیم به هاست باید کارهای خود را انجام دهید پس در اینجاست که به این آموزش نیاز پیدا خواهید کرد.
حذف تمام جداول بانک اطلاعاتی با PHP
در این بخش شما کافیست قطعه کد زیر را در یک فایل PHP قرار دهید و آن را از طریق FTP یا هر روش دیگری در سایت خود آپلود کیند و آن را اجرا کنید؛ بعد از اجرا شدن این دستور تمامی جدولهای موجود در بانک اطلاعاتی مورد نظر شما پاک میشود و یک بانک اطلاعاتی یا دیتابیس mysql خالی دارید.
<?php
$mysqli = new mysqli("localhost", "user", "pass", "dbname");
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES"))
{
while($row = $result->fetch_array(MYSQLI_NUM))
{
$mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
echo $row[0].",\n";
}
}
$mysqli->query('SET foreign_key_checks = 1');
$mysqli->close();
?>
نکته: دقت کنید در خط $mysqli = new mysqli(“localhost”, “user”, “pass”, “dbname”); متغیرهای مورد نظر را با مقادیر درست پر کنید و سپس کد را اجرا کنید
اگر مشکلی با کد بالا داشتید در بخش نظرات همین نوشته برای ما بنویسید.



















اگر بعضی جدولها قفل باشن یا در حال استفاده باشن، رفتار اسکریپت چی میشه؟
با سلام، اگر جداول در حال استفاده باشند، اسکریپت ممکن است با خطا مواجه شود یا جدول مورد نظر حذف نشود. توصیه میشود قبل از اجرای اسکریپت، از عدم استفاده از جداول اطمینان حاصل کنید.
این اسکریپت روی نسخههای جدید MySQL/MariaDB هم بدون تغییر کار میکنه یا باید چیزی بهروزرسانی بشه؟
بله این اسکریپت روی نسخههای جدید MySQL/MariaDB هم بدون تغییر کار میکند.
بعد از خاموشکردن foreign_key_checks، لازم نیست روابط یا محدودیتها رو بازیابی یا بررسی کنیم؟
خیر، بعد از اجرای کد و حذف جداول، نیازی به بازیابی یا بررسی روابط و محدودیتها نیست، زیرا تمام ساختار پایگاه داده حذف شده است.
این کد با دیتابیسهایی که ویو یا ترایگر دارن هم درست عمل میکنه یا فقط جدولها رو هدف میگیره؟
این کد فقط جداول را حذف میکند و با ویو یا تریگرها مشکلی نخواهد داشت.
اگر یکی از کوئریها خطا بده، اسکریپت ادامه میدهد یا بهتره مکانیزم توقف/گزارش خطا اضافه بشه؟
این اسکریپت در صورت بروز خطا در اجرای یک کوئری، به صورت پیشفرض ادامه میدهد. برای اطمینان بیشتر، میتوانید قبل از هر دستور DROP TABLE، بررسی کنید که آیا جدول مورد نظر وجود دارد یا خیر.