Потренируемся создавать запросы
Просмотров: 1466Итак начнем.
SQL запросы на выборку данных:
1. SELECT * FROM <Имя таблицы>
SELECT * FROM `#__users` -используя, описанные в предыдущем шаге методы класса database выполните запрос.
$query = 'SELECT * FROM `#__users`';
$database->setQuery($query);
$result = $database->loadResultArray(3);
foreach ($result as $row)
{
echo($row."<br>");
}
Отобразит список е-мэйлов зарегистрированных в CMS пользователей. Звездочка в запросе означает, что база данных вернет значения всех полей, которыми обладает данная таблица. Если значения каких-то полей не нужны лучше использовать следующий вид запроса.
2. SELECT <Имя поля1>, <Имя поля2>, …, <Имя поляN> FROM <Имя таблицы>
SELECT `id`, `name`, `username` FROM `#__users`
$query = 'SELECT `id`, `name`, `username` FROM `#__users`';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['id'].' - '.$row['name'].' - '.$row['username']."<br>");
}
Отображает список, состоящий и идентификатора, имени и логина пользователей, зарегистрированных в системе.
3. SELECT * FROM `Имя таблицы` WHERE `Имя поля` < <Параметр>
SELECT * FROM `Имя таблицы` WHERE `Имя поля` = <Параметр>
SELECT * FROM `Имя таблицы` WHERE `Имя поля` > <Параметр>
SELECT * FROM `#__users` WHERE `id`<69
$query = 'SELECT * FROM `#__users` WHERE `id`<69';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['id'].' - '.$row['name'].' - '.$row['username']."<br>");
}
Отображает данные только тех пользователей, id которых меньше 69. За ключевым словом WHERE идет условие отбора записей. Условие может быть как простым (в прмере), так и сложным.((Имя поля1 < 1) AND (Имя поля2 > 2)).
4. SELECT <Имя таблицы1>.<Имя поля3>, <Имя таблицы2>.<Имя поля4>
FROM <Имя таблицы1>,<Имя таблицы2>
WHERE <Имя таблицы1>.<Имя поля1>=<Имя таблицы2>.<Имя поля2>
SELECT `#__content`.`title`, `#__users`.`id` FROM `#__users`, `#__content`
WHERE `#__users`.`id`= `#__content`.`created_by`
$query = 'SELECT `#__content`.`title`, `#__users`.`id`
FROM `#__users`, `#__content`
WHERE `#__users`.`id`= `#__content`.`created_by`';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['id'].'-'.$row['title']."<br>");
}
Отображает список заголовков статей, и идентификатор пользователя, который их создал.
5. SELECT * FROM <Имя таблицы> LIMIT <целое неотрицательное число>
SELECT * FROM `#__content` LIMIT 5
$query = 'SELECT * FROM `#__content` LIMIT 5';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['title']."<br>");
}
Отобразит значения поля title первых пяти записей таблицы #__content
6. SELECT * FROM <Имя таблицы>
LIMIT <целое неотрицательное число1>,<целое неотрицательное число2>
SELECT * FROM `#__content` LIMIT 2, 5
$query = 'SELECT * FROM `#__content` LIMIT 2, 5';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['title']."<br>");
}
Отобразит значения поля title 5 записей из таблицы #__content, начиная с 2 (Нумеруются записи с нуля)
7. SELECT * FROM <Имя таблицы> ORDER BY <Имя поля>
SELECT * FROM `#__content` ORFDER BY `modified`
$query = 'SELECT * FROM `#__content` ORDER BY `modified`';
$database->setQuery($query);
$result = $database-> loadAssocList();
foreach ($result as $row)
{
echo($row['modified'].' - '.$row['title']."<br>");
}
Выводятся поля значения полей modified и title всех записей таблицы #__content. Сортировка при выводе идет по полю modified.
SQL запросы на создание, удаление и редактирование таблиц.
1. CREATE TABLE <Имя таблицы> [(параметры)]
$query = 'CREATE TABLE `test` (
`id_test` INT NOT NULL ,
`test` TEXT NOT NULL ,
`description` TEXT NOT NULL ,
PRIMARY KEY ( `id_test` )
);';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
Создает таблицу в текущей базе данных с полями id_test (целочисленное, не нуль), test, description (текстовые). Поле id_test – первичный ключ. (Если запрос выполнится, то будет выведена надпись Успешно, Неуспешно в обратном случае.)
2. ALTER TABLE `test` <параметр>
Основные значения параметра приведены в таблице:
|
ADD <Имя поля1> <Тип поля>
[FIRST | AFTER <Имя поля2>]
|
Добавление нового поля в таблицу
Конструкция FIRST добавляет новое поле перед столбцом <Имя поля2>. Конструкция AFTER добавляет поле после поля <Имя поля2>.
|
|
ADD INDEX [<Имя индекса>]
(<Имя поля1>, …)
|
Добавление индекса для поля <Имя поля1>. Если имя индекса не указано, то ему присваивается имя совпадающее с именем поля.
|
|
ADD PRIMARY KEY
(<Имя поля1>, …)
|
Делает поле <Имя поля1> первичным ключом таблицы.
|
|
CHANGE <Старое имя поля>
<Новое имя поля> <Тип поля>
|
Изменение поля <Старое имя поля> на поле <Новое имя поля> с типом <Тип поля>
|
|
DROP <Имя поля>
|
Удаление поля
|
|
DROP PRIMARY KEY
|
Удаление первичного ключа таблицы
|
|
DROP INDEX <Имя индекса>
|
Удаление индекса
|
Например отредактируем таблицу test, созданную ранее. Удалим у неё поле description.
$query = 'ALTER TABLE `test` DROP `description`';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
3. DROP TABLE <Имя таблицы>
$query = 'DROP TABLE `test`';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
Удаление таблицы test.
SQL запросы на вставку, редактирование и удаление данных в таблицах.
1. INSERT INTO <Имя таблицы> VALUES (<Значение1>, …)
$query = 'INSERT INTO `mdo_message` VALUES (1,"text", 1,1,1)';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
2. INSERT INTO <Имя таблицы> (<Имя поля1>, …) VALUES (<Значение1>, …)
$query = 'INSERT INTO `mdo_message` (`message`) VALUES ("text")';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
Вставляет запись в таблицу mdo_message. Значения всех полей кроме message устанавливаются по умолчанию.
2. DELETE FROM <Имя таблицы> WHERE <Усвловие>
$query = 'DELETE FROM `mdo_message` WHERE `id_message`<1000';
$database->setQuery($query);
if ($database->query()){echo('Успешно');}
else {echo('НЕУспешно');}
Из таблицы mdo_message будут удалены все записи у которых значение поля id_message меньше 1000.
Итак на этом шаге мы рассмотрели основные виды SQL запросов. Рассмотрели несколько примеров использования их в Joomla. На следующем шаге мы опишем разработку реакции на нажатие подпункта меню Наша доска->Просмотр и удаление объявлений.

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