Удаление таблиц в БД MySQL

21.04.2017 При переносе сайтов с хостинга на хостинг в некоторых ситуациях возникает необходимость предварительно очистить БД.

Хорошим примером может послужить процесс множественного восстановления на поддомен нескольких резервных копий одного сайта. Однако не стоит привязываться именно к этой ситуации - их может быть много и они могут быть разные.

Ниже приведённый код не является оптимальным, но он делает, то что должен делать.

Пример для библиотеки mysql:
<?
$link = mysql_connect('localhost', 'username', 'password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$db_selected = mysql_select_db('dbname', $link);
if (!$db_selected) {
    die ('DB: ' . mysql_error());
}
$result = mysql_query('SHOW TABLES');
if (!$result) {
    die('Invalid query1: ' . mysql_error());
}

$str = "";
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    $str .= $row[0].", ";
}
$len = strlen($str);
$str = substr($str, 0, $len-2).";";

$result = mysql_query("DROP TABLE IF EXISTS ".$str);

if (!$result) {
    die('Invalid query2: ' . mysql_error());
}
mysql_close($link);
?>


Пример для библиотеки mysqli:

<?php
$link = mysqli_connect("localhost", "username", "password", "dbname");

if (!$link) {
    echo "Mysql error1: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

if ($result = mysqli_query($link, "SHOW TABLES")) {
    $str = "";
    while ($row = mysqli_fetch_row($result)) {
$str .= $row[0].", ";
    }
    $len = strlen($str);
    $str = substr($str, 0, $len-2).";";
}
else {
    echo "Mysql error2: " . $link->error . PHP_EOL;
    mysqli_close($link);
    exit;
}

$result = mysqli_query($link, "DROP TABLE IF EXISTS ".$str);
if (!$result) {
    echo "Mysql error3: " . $link->error . PHP_EOL;
    mysqli_close($link);
    exit;
}
else {
    echo "DATABASE IS CLEARED!";
}

mysqli_close($link);
?>

Надеемся, что данная статья окажется Вам полезной. 


Возврат к списку