WEB start

Компьютеры. Интернет. Профессиональное обучение. 055-966-10-17

hit 
counter

PHP программирование

Наши преимущества

  • Наши программы обучения ориентированы на конкретного слушателя. Вы можете обучаться по одной из предложенных Вам программ, а можете самостоятельно составить, откорректировать, откорректировать свою персональную программу обучения. Преподаватель, консультант помогают Вам сориентироваться в материале курса при выборе программы обучения.
  • Обучение индивидуальное. Преподаватель проводит занятие только для Вас, ориентируясь на Ваши возможности, предыдущие знания и опыт, скорость восприятия нового материала.
  • Вы учитесь в удобное для Вас время, в удобной для Вас форме, может быть выбран гибкий график занятий, в соответствии с Вашими возможностями и пожеланиями.
  • Обучение проводится дистанционно. Вы можете обучаться, сидя за Вашим компьютером дома или на работе, не тратя время на поездки к месту обучения.


Регистрация на сайте

PHP MySQL

PHP работа с базами данных

Что такое база данных MySQL

База данных представляет собой систему храниения данных, которая включает в себя также и механизм контроля доступа к данным, систему управления этими данными. 

Каждая база данных поддерживает один или несколько программных интерфейсов (API) для разных языков программирования. Библиотеки API предназначены для обеспечения доступа ко всем функциям базы, таким как: создание, удаление, модификация баз данных, доступа к данным, поиска и репликации данных и др..

В принципе, для хранения данных могут быть использованы и другие способы. Например: файлы в файловой системе, таблицы в памяти. Но база данных предоставляет несравнимо больше возможностей для выборки и обработки больших массивов данных, скорость обработки и защищённость данных.

В настоящее время для хранения и управления большими массивами информации используются:

реляционные системы управления базами данных (RDBMS Relational Database Management System). Все данные в такой системе хранятся в разных таблицах и отношения между ними устанавливаются с использованием различного типа ключей. Иногда называют SQL - базы данных.


MySQL - популярная система управления базами данных. Практически все языки программирования поддерживают API для работы с MySQL.

Самое популярное сочетание для современных WEB разработок - это язык программирования PHP и MySQL в качестве системы управления базами данных.

MySQL использует стандартные запросы языка SQL (Structured Query Languagequeries) для манипуляций с данными.

Терминология

  • Database: реляционная база данных, которая представляет собой набор таблиц с данными.
  • Table: таблица, еоторая представляет собой матрицу с данными, состоит из рядов и колонок.
  • Column: один столбец (data element) содержит данные одного и того же типа, например: столбец - почтовый индекс.
  • Row: строка таблицы в базе данных представляет собой группу связанных данных, например данные одного клиента.
  • Primary Key: первичный ключ, коорый является уникальным. С помощью ключа можно быстро найти нужную строку.
  • Foreign Key: внешний ключ связывает данные из разных таблиц.
  • Compound Key: комбинированный ключ (composite key) является ключом , который состоит из нескольких колонок.

Работа с MySQL через WEB интерфейс - phpMyAdmin

PhpMyAdmin - это самый популярный сегодня, бесплатный программный инструмент - графический WEB интерфейс, написанный на PHP, предназначенный для управления бзами данных MySQL через интернет.

PhpMyAdmin поддерживает широкий спектр операций с базами данных MySQL. Часто используемые операции (управление базами данных, таблицы, столбцы, отношения, индексы, пользователи, разрешения и т. Д.) могут выполняться как через пользовательский интерфейс так и через SQL - запросы.

PHP - MySQL драйверы и плагины

Язык PHP предоставляетрасширения для работы с различными базами данных. В том числе - MySQL.

API предоставляет на выбор три набора инструментов для подключения к серверу баз данных MySQL:

  • Расширение PHP MySQL
  • Расширение PHP MySQLi
  • Объекты данных PHP (PDO)

Наиболее часто сегодня используется MySQLi.

Расширение MySQLi, или как его еще называют улучшенное (improved) MySQL расширение, было разработано, чтобы дать возможность программистам в полной мере воспользоваться функционалом MySQL сервера версий 4.1.3 и выше. Расширение mysqli включается в поставку PHP версий 5 и выше.

Объекты данных PHP, или PDO, представляют из себя абстракцию коннектора баз данных для PHP приложений. PDO предоставляет API интерфейс взаимодействия с базой данных, не зависящий от конкретной СУБД. Теоретически, при использовании PDO можно поменять сервер баз данных, например с Firebird на MySQL, и это приведет лишь к незначительным изменениям в PHP коде.

Создание базы данных

База данных в MySQL - это набор таблиц и связей между ними.

Для управления этой базой данных создаётся пользователь с определённым набором прав на неё. Когда на сервер ставится MySQL, он создаёт единственного пользователя root с максимальными правами. Далее можно управлять пользователями, создавать новых, удалять, менять права. Обычная практика: дл каждой базы данных создаётся свой пользователь.

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

Каждое действие с данными проводит SQL запрос (SQL query), который даёт команду серверу.

Основные команды

  • SELECT - извлекает данные из базы данных
  • UPDATE - обновляет данные в базе данных
  • DELETE - удаляет данные из базы данных
  • INSERT INTO - вставляет новые данные в базу данных
  • CREATE DATABASE - создает новую базу данных
  • ALTER DATABASE - изменяет базу данных
  • CREATE TABLE - создает новую таблицу
  • ALTER TABLE - изменяет таблицу
  • DROP TABLE - удаляет таблицу
  • CREATE INDEX - создает индекс (ключ поиска)
  • DROP INDEX - удаляет индекс


Примеры стандартных SQL запросов

Предположим, что наш MySQL server установлен на localhost (тот же компьютер, на котором запускается PHP программа, обращающаяся к этому серверу).

Пользователь, имеющий полные права на управление сервером - root, с паролем Test12345.

Создадим базу данных Students вот такой структуры:

ID Имя Дата регистрации Курс












Для этого:

  1. подключаемся с серверу MySQL
  2. создаём пользователя и базу данных, даём пользователю полные права на эту БД
  3. создаём в БД таблицу.

Используем методы MySQLi. Для создания баз подключаемся к серверу с данными пользователя, имеющего право создавать базы данных (сейчас - root nr как никаких других мы не создавали).

Подключаемся к MySQL серверу из PHP программы, 

$servername = "localhost"; $username = "root"; $password = "Test12345"; $dbname = "Students"; // Create connection $conn = mysqli_connect($servername, $username, $password); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); }


созданём базу данных Students

// Create database $sql="CREATE DATABASE $dbname CHARACTER SET utf8 COLLATE utf8_general_ci"; if (mysqli_query($conn, $sql)) { echo "Database <b>$dbname</b> created successfully"; } else { echo "Error creating database: " . mysqli_error($conn); }

Созданём пользователя и даём ему права на базу данных


Создаём таблицу



PDO




Основные типы даннх

Числовые типы данных

Тип данных Объем памяти
байт
Диапазон Описание
TINYINT (M) от -128 до 127
или
от 0 до 255
Целое. Может быть объявлено UNSIGNED. Необязательный параметр М - количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.

TINYINT - число в диапазоне от -128 до 127.

TINYINT UNSIGNED - число в диапазоне от 0 до 255.

TINYINT (3) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 002.

SMALLINT (M) от -32768 до 32767 или
от 0 до 65535

SMALLINT - целое число в диапазоне от -32768 до 32767.

SMALLINT UNSIGNED - целое число в диапазоне от 0 до 65535.

SMALLINT (4) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0002.

MEDIUMINT (M) от -8388608 до 8388608
или
от 0 до 16777215

MEDIUMINT - целое число в диапазоне от -8388608 до 8388608.

MEDIUMINT UNSIGNED - целое число в диапазоне от 0 до 16777215.

MEDIUMINT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.

INT (M)
или
INTEGER (M)
от -2147683648 до 2147683648 или от 0 до 4294967295

INT - хранит целое число в диапазоне от -2147683648 до 2147683648.

INT UNSIGNED - целое число в диапазоне от 0 до 4294967295.

INT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.

BIGINT (M) от -263 до 263-1 или от 0 до 264

BIGINT - целое число в диапазоне от -263до 263-1.

BIGINT UNSIGNED - целое число в диапазоне от 0 до 264.

BIGINT (7) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0000002.

BOOL или BOOLEAN 1 либо 0, либо 1 Булево значение. 0 - ложь (false), 1 - истина (true).
DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D) M + 2  зависят от параметров M и D Используются для величин повышенной точности, например, для денежных данных.
M - количество отводимых под число символов (максимальное значение - 64).
D - количество знаков после запятой (максимальное значение - 30).

DECIMAL (5,2) - будет хранить числа от -99,99 до 99,99.

FLOAT (M,D) мин. значение +(-) 1.175494351 * 10-39

макс. значение +(-) 3. 402823466 * 1038

Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M - количество отводимых под число символов. D - количество символов дробной части. 

FLOAT (5,2) - будет хранить числа из 5 символов, 2 из которых будут идти после запятой (например: 46,58).

DOUBLE (M,D) мин. значение +(-) 2.2250738585072015 * 10-308

макс. значение +(-) 1.797693134862315 * 10308

DOUBLE - большие дробные числа.


Строковые типы данных

Тип данных Объем памяти
символов
Максимальный размер
символов
Описание
CHAR (M) M М  Позволяет хранить строку фиксированной длины М. Значение М - от 0 до 65535.

CHAR (8) - хранит строки из 8 символов и занимает 8 байтов. Например, любое из следующих значений: '', 'Иван','Ирина', 'Сергей' будет занимать по 8 байтов памяти. А при попытке ввести значение 'Александра', оно будет усечено до 'Александ', т.е. до 8 символов.

VARCHAR (M) L+1  М  Позволяет хранить переменные строки длиной L. Значение М - от 0 до 65535.

VARCHAR (3) - хранит строки максимум из 3 символов, но пустая строка '' занимает 1 байт памяти, строка 'a' - 2 байта, строк 'aa' - 3 байта, строка 'aaa' - 4 байта. Значение более 3 символов будет усечено до 3.

BLOB, TEXT L+2  216-1  Позволяют хранить большие объемы текста. Причем тип TEXT используется для хранения именно текста, а BLOB - для хранения изображений, звука, электронных документов и т.д.
MEDIUMBLOB, MEDIUMTEXT L+3  224-1  Аналогично предыдущему, но с большим размером.
LONGBLOB, LONGTEXT L+4  232-1  Аналогично предыдущему, но с большим размером.
ENUM ('value1', 'value2', ...,'valueN') 1 или 2 байта 65535 элементов Строки этого типа могут принимать только одно из значений указанного множества.

ENUM ('да', 'нет') - в столбце с таким типом может храниться только одно из имеющихся значений. Удобно использовать, если предусмотрено, что в столбце должен храниться ответ на вопрос.

SET ('value1', 'value2', ...,'valueN') до 8 байт 64 элемента Строки этого типа могут принимать любой или все элементы из значений указанного множества.

SET ('первый', 'второй') - в столбце с таким типом может храниться одно из перечисленных значений, оба сразу или значение может отсутствовать вовсе.

Календарные типы данных

Тип данных Объем памяти
байт
Диапазон Описание
DATE от '1000-01-01' до '9999-12-31' Предназначен для хранения даты. В качестве первого значения указывается год в формате "YYYY", через дефис - месяц в формате "ММ", а затем день в формате "DD". В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры.
TIME от '-838:59:59' до '838:59:59' Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате - hh:mm:ss, где hh - часы, mm - минуты, ss - секунды. В качестве разделителя может выступать любой символ отличный от цифры.
DATATIME от '1000-01-01 00:00:00' до '9999-12-31 23:59:59' Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.
TIMESTAMP от '1970-01-01 00:00:00' до '2037-12-31 23:59:59' Предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года (начало эпохи UNIX).
YEAR (M) 1 от 1970 до 2069 для М=2 и от 1901 до 2155 для М=4 Предназначен для хранения года. М - задает формат года. Например, YEAR (2) - 70, а YEAR (4) - 1970. Если параметр М не указан, то по умолчанию считается, что он равен 4.


Тип данных NULL


NOT NULL (значение не может отсутствовать) для полей логин и пароль,

NULL (значение может отсутствовать) для полей дата рождения и пол.

По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.

Пример:

create table users (login varchar(20), password varchar(15), sex enum('man', 'woman') NULL, date_birth date NULL); 

Таким образом создаем таблицу с 4 столбцами: 

логин (не более 20 символов) обязательное, 

пароль (не более 15 символов) обязательное, 

пол (мужской или женский) не обязательное, 

дата рождения (тип дата) необязательное.