Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

<<< Добавление кнопки Google +1 || Добавление кнопки Yandex поделиться >>>

PHP работа с базой данных (Часть 3)

28.10.2011
PHP работа с базой данных (Часть 3)

Здравствуй уважаемый читатель блога LifeExample, эта статья завершающая в цикле статей PHP работа с базой данных, в ней мы рассмотрим оставшиеся вопросы:

  1. Как удалить запись?
  2. Как удалить таблицу?
  3. Как удалить БД?

Все может показаться просто, на самом деле так и есть, все эти задачи решаются выполнением одного запроса к БД с помощью функции mysql_query(). Загвоздка может случиться при попытке в одном запросе выполнить несколько действий. К примеру, может понадобиться сначала удалить запись, затем удалить таблицу, и в итоге всю базу последовательно. Для этого, если ты уважаемый читатель пользуешься phpMyAdmin, тебе понадобится выполнить вот такой запрос:

1
2
3
DELETE FROM `table` WHERE `id` = 1;
DROP TABLE  `table`;
DROP DATABASE `db_test`;

Но в случае выполнения тогоже запроса средствами php, компилятор начнет ругаться.

Пример не правильного использования mysql_query:

1
2
3
4
5
mysql_query("
  DELETE FROM `table` WHERE `id` = 1;
  DROP TABLE ` table`;
  DROP DATABASE `db_test`;
"
)

Дело в том, что этот запрос содержит в себе три других, а mysql_query() способна выполнить только один, следовательно придется писать вместо одного вызова последовательно три.

Запрос на удаление строки из таблицы

1
mysql_query("DELETE FROM `table` WHERE `id` = 1")

Запрос на удаление самой таблицы

1
mysql_query("DROP TABLE ` table`")

Запрос на удаление всей базы

1
mysql_query("DROP TABLE ` table`")

При таком подходе ошибок не возникнет. Наверное ты читатель задался вопросом, почему объединенные запросы работают в phpMyAdmin? А работают они потому, что phpMyAdmin разбирает полученный запрос на несколько используя указанный разделитель, который можно выбрать чуть ниже области ввода запроса. По умолчанию в качестве разделителя выбран символ точка с запятой, поэтому складывается ощущение, что совокупность запросов собранная в один, выполняется без прекословно, но на самом деле они также выполняются поочередно, только делается все это автоматически. При желании можно написать обработчик, который выполнит комбинированный запрос, разобрав его на отдельные части:

Функция выполнения комбинированного запроса

1
2
3
4
5
6
7
8
<?php
function my_mysql_query($sql){
  $array_sqls = explode(";", $sql);
  foreach($array_sqls as $sql){
    mysql_query($sql) or die ("Ошибка запроса")
  }
}
?>

Теперь если передать написанной нами функции my_mysql_query() запрос состоящий из нескольких и более, то компилятор ошибок не выдаст. Работа данной функции схожа с принципом выполнения запросов в phpMyAdmin.

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Нравится

Комментарии

  • Вячеслав

    Запрос на удаление всей базы данных должен быть таким

    mysql_query(«DROP DATABASE ` table`»)

  • Роман

    mysql_query(«DROP DATABASE `db_name`»)

  • Оставить комментарий

    Не отвечать

    Подписаться на комментарии к этой статье по RSS

    Яндекс.Метрика