Работа с базой данных и основы SQL в PHP

Лекция



Привет, Вы узнаете о том , что такое работа с базой данных, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое работа с базой данных, sql в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .


Итак, мы вплотную подошли к работе с базами данных. Для начала определимся с парой терминов:

СУБД (Система Управление Базами Данных) - набор программ и утилит, предназначенных для организации и ведения базы данных.
SQL - Structured Query Language -- язык структурированных запросов. SQL - не является языком программирования, правильнее будет звучать 
язык работы с базами данных.
База Данных (БД) - совокупность структурированных данных, которые хранятся в виде таблиц.
Таблица - набор данных организованный в виде двумерного массива. Для доступа к данным таблицы используются имена колонок (столбцов, полей) 
и номер записи (строки). Приведем пример таблицы:

Номер  | Название   | Цена  | Остаток
-------+------------+-------+---------
1      | Процессор  | 200   |  4
2      | Видеокарта | 120   |  1
3      | Монитор    | 200   |  2
4      | Мышь       | 6     |  10

Как видно из примера, у нашей таблицы четыре колонки: Номер, Название, Цена и остаток, и 4 строки (записи).

Несколько таких таблиц являются частью базу данных. Более точное определение Базы данных дадим позже, когда узнаем немного больше о Базах Данных и SQL. Также при изучении мы будем вводить новые понятия и определения.

Теперь попробуем связать Базы данных и PHP. 

Поскольку существует несколько вариантов СУБД, каждый выбирает ту, которая ему ближе и роднее. По сути у каждой свои плюсы и свои минусы. Свои задачи они все выполняю очень хорошо. Здесь будем учится работе с системой PostgreSQL и основам SQL, поскольку независимо от СУБД, SQL один. И большинство разработчиков СУДБ поддерживаются стандартов.

Установка:
Процесс установки СУБД PostgreSQL описан в официальной документации, прилагаемой к дистрибутиву. 
Для связи PHP и POstgreSQL необходимо в файле настроек PHP (php.ini) раскоментировать строку "extension=php_pgsql.dll".

Для любой работы с БД необходимо установить соединение с СУБД. В PHP для соединение с СУБД PostgreSQL используется функция pg_connect.

Установим соединение на локальной машиной (компьютер на котором производим подключение и на котором стоит наша СУБД) с базой ourdatabase,

<?PHP 
$user="nick";
$pass="pass";
$connection = pg_connect ("host=127.0.0.1 dbname=ourdatabase user=$user password=$pass");
?>>

После выполнения кода переменная $connection будет содержать ссылку на наше соединение, которые мы и будем использовать для работы.

Дальнейшее объяснение тесно связано со знанием и понимание SQL (псевдоязык работы с БД). Но поскольку мы только начинаем изучать PHP и БД,то попробуем освоить одновременно некие азы, необходимые для минимально нормально работы. 


Создание таблиц.

В любой БД должны быть таблицы, с которыми мы будем работать. Для их создания используется SQL-запрос (команда для выполнение СУДБ):
CREATE TABLE name (col1 type, col2 type, ... );
name - имя будущей таблицы. Не рекомендуется называть таблицы зарезервированными именами, например: date, text, varchar, integer и т.д.
col1, col2 .... Об этом говорит сайт https://intellect.icu . - имена колонок нашей таблицы;
type - тип данных, которые будут храниться в колонках. 

Основные типы данных, наиболее часто используемые в работе:
smallint, integer, bigint - целые типы. отличаются друг от друга пределами своих значений. Один и тот же тип данных может иметь разные пределы, это зависит от операционной системы.
text - текстовый тип, предназначен для хранение больших текстов неопределенной длины.
varchar(size) - символьный тип, представляет собой массив из size символов.
boolean - логический тип. Может принимать только два значения: true (истина, 1) и false (ложь, 0).
timestamp with timezone - штамп времени. используется для хранение даты и времени с большой точностью.
так же есть значение NULL - оно используется для пустого значения любого типа.

Это только малая часть всех поддерживаемых типов данных, но их нам пока что хватит.
Теперь попробуем написать запрос для создания таблицы из примера выше, но названия колонок сделаем латиницей:

CREATE TABLE sklad (no smallint, name varchar(100), price integer, last integer);

Запрос готов, но как его передать с помощью PHP? Для этого есть функция pg_query:

CODE:

<?PHP
$result=pg_query($connection,"CREATE TABLE sklad (no smallint, name varchar(100), price integer, last integer);");
?>

$result - ссылка на данные с результатом запроса. об этом чуть позже.
$connection - ссылка на наше соединение, от функции pg_connect.

Итак, таблица создана. Теперь осталось ее наполнить данными. Для этого существует конструкция INSERT:

INSERT INTO table VALUES (val1, val2, ...);
table - имя таблицы
val1,val2, ... - значение полей добавляемой записи, количество значений, для данного вида запроса, должно быть равно количеству полей в таблице.

Добавим в нашу таблицу данные:
INSERT INTO sklad VALUES (3,'Монитор',200,2);
Как видно из примера, все строковые и символьные типы, а так же несколько специальных (inet, macaddr), должны заключаться в одинарные 
кавычки.

Теперь давайте представим, что наша таблица состоит из 10, а может 20 полей, а нам надо добавить строку с заполненными всего 2-5. Что делать? Неужели указывать кучу пустых значений? Конечно, нет! Для этого используется конструкция вида:

INSERT INTO table (col1, col2, ..., coln) VALUES (val1, val2, ..., valn);
Здесь сразу после названия таблицы в скобках пишем названия полей, для которых мы будем устанавливать значения. В этом случае количество 
значений должно совпадать с количеством заявленных полей. Например:

INSERT INTO sklad (no,name) VALUES (3,'Монитор');

Мы добавили запись с установленными значениями no=3 и name='Монитор'. Остальные поля у нас оказались со значением NULL.

Теперь пора отправить этот запрос с помощью уже известной нам функции pg_query:

<?PHP
$result=pg_query($connection,"INSERT INTO sklad (no,name) VALUES (3,'Монитор');");
?>

Рассмотрим ситуацию, когда значение NULL нас совсем не устраивает, и нам надо сделать по умолчанию другое значение.
Тогда необходимо создавать таблицу слегка другим образом:
CREATE TABLE name (col1 type DEFAULT val, col2 type DEFAULT val, ... );
где val - значения по умолчанию для соответствующих полей.

Запрос создания нашей таблицы преобразится в такой:
CREATE TABLE sklad (
no smallint, 
name varchar(100), 
price integer DEFAULT 0, 
last integer DEFAULT 0 NOT NULL
);

Это значит, что поля no и name по умолчанию пустые, т.е. их надо явно указывать, а поля price и last по умолчанию будут равны 0. Но полю price можно присвоить NULL, а last нет. Это достигается с помощью приставки NOT NULL.


Считывание данных.

Мы научились создавать таблицу, записывать в нее данные, теперь научимся получать данные с таблицы. Здесь придется немного подольше поизучать SQL. Несмотря на обширность каждой и рассмотренных частей. данная самая часто используемая. Множество вариантов считывания и обработки просто необходимо рассмотреть.

Итак для считывания данных используется запрос SELECT:
SELECT col1,col2,...,coln FROM table;
вернет нам поля col1,col2,...,coln для всех записей.

Если нам надо вернуть все поля, то вместо названий полей мы напишем просто * (звездочку):
SELECT * FROM table;
И опять же мы сталкиваемся с вопросом: а что делать если надо выбрать не все записи?Для этого опять есть вариант запроса:
SELECT * FROM table WHERE exp;
где exp - любое логическое выражение. например:
SELECT * FROM table WHERE price>50;
Вернет нам все поля записей, у которых поле price больше 50.

Так же есть возможность отсортировать полученный результат по какой либо колонке. Для этого достаточно дописать в конец предыдущего запроса 
"ORDER BY col"
где col - имя колонки. Для обратной сортировки (от большего к меньшему) необходимо дописать в конец приставку DESC:
SELECT * FROM table ORDER BY price DESC; - вернет все записи от большей цены к меньшей.

$result=pg_query("SELECT * FROM sklad;");

Вернет в $result данные. Но print $result; ничего хорошего нам не покажет. Для дальнейшей работы с полученными данными их необходимо обработать. Приведу наиболее часто используемый, на мой взгляд, вариант обработки:

<?PHP
while ($db=pg_fetch_array($result))
{
    $no=$db['no'];
    $name=$db['name'];
    $cena=$db['price'];
    $ost=$db['last'];
    print "
    Номер: $no
    Название: $name
    Цена: $cena
    Остаток: $ost
    ";
}
?>

Данные пример выведет на экран содержимое нашей таблицы в удобочитаемом виде. Для этого была использована функция pg_fetch_array.
pg_fetch_array в качестве аргумента принимает переменную ресурс с результатом выполнения запроса и возвращает ассоциативный массив с первой записью и передвигает указатель на следующую, примерно как делает функция pop с массивом.

Рассмотрим еще один пример:

<?PHP 
$rows=pg_num_rows($result);
for ($i=0;$i<$rows;$i++)
{
    $no=pg_result($result,$i,'no');
    $name=pg_result($result,$i,'name');
    $cena=pg_result($result,$i,'price');
    $ost=pg_result($result,$i,'last');

    print "
    Номер: $no
    Название: $name
    Цена: $cena
    Остаток: $ost
    ";
}
?>

Этот пример выведет абсолютно то же самое, что и предыдущий, но в нем использованы другие функции.
Первая очень полезная pg_num_rows, в качестве аргумента принимает переменную с результатом выполнения запроса. А возвращает количество записей, которые вернул запрос.

В заключение, эта статья об работа с базой данных подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое работа с базой данных, sql в php и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

создано: 2016-01-26
обновлено: 2024-11-13
213



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)