Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%
PHP работа с базой данных (Часть 3)
Здравствуй уважаемый читатель блога LifeExample, эта статья завершающая в цикле статей PHP работа с базой данных, в ней мы рассмотрим оставшиеся вопросы:
- Как удалить запись?
- Как удалить таблицу?
- Как удалить БД?
Все может показаться просто, на самом деле так и есть, все эти задачи решаются выполнением одного запроса к БД с помощью функции 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`»)