Понедельник, 29.04.2024, 01:22
Меню сайта
Категории раздела
JQuery плагины [59]
JQuery уроки [69]
PHP полезное [24]
PHP уроки [21]
Css [26]
JS [3]
SQL [9]
Css 3 [17]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » PHP уроки

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

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

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

Здравствуй уважаемый читатель блога, эта статья завершающая в цикле статей 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.

Категория: PHP уроки | Добавил: ChronoW (24.04.2013)
Просмотров: 740 | Комментарии: 1 | Теги: php sql, php, PHP работа с базой данных | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: