1. Главная страница » Компьютеры » Php работа с базой данных mysql

Php работа с базой данных mysql

Автор: | 16.12.2019

Содержание

СУБД MySQL — одна из множества баз данных, поддерживаемых в PHP. Система MySQL распространяется бесплатно и обладает достаточной мощностью для решения реальных задач.

Краткое введение в MySQL

SQL — это аббревиатура от слов Structured Query Language, что означает структурированный язык запросов. Этот язык является стандартным средством для доступа к различным базам данных.

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

Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-разработчика: Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять, удалять и редактировать данные.

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

Тип Описание
INT Целое число
TINYINT Маленькое целое число (-127 до 128 или от 0 до 255)
FLOAT Вещественное число с плавающей точкой
DATE Дата. Отображается в виде ГГГГ-ММ-ДД
TIME Время. Отображается в виде ЧЧ:ММ:СС
DATETIME Дата и время. Отображается в виде ГГГГ-ММ-ДДЧЧ:ММ:СС
YEAR[(2|4)] Год. Можно определить двух- или четырехциферный формат
CHAR(M) Строка фиксированной длины М (M
Тип Описание
NOT NULL Все строки таблицы должны иметь значение в этом атрибуте. Если не указано, поле может быть пустым (NULL)
AUTO_INCREMENT Специальная возможность MySQL, которую можно задействовать в числовых столбцах. Если при вставке строк в таблицу оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу больше максимального значения, уже существующего в столбце. В каждой таблице может быть не больше одного такого поля. Столбцы с AUTO_INCREMENT должны быть проиндексированными
PRIMARY KEY Столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными. MySQL автоматически индексирует этот столбец
UNSIGNED После целочисленного типа означает, что его значение может быть либо положительным, либо нулевым
COMMENT Название столбца таблицы

Создание новой базы данных MySQL осуществляется при помощи SQL-команды CREATE DATABASE.

Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE. Например, таблица books для книжного магазина будет содержать пять полей: ISBN, автор, название, цена и количество экземпляров: Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую строчку, добавив фразу "IF NOT EXISTS":

Для создания автообновляемого поля с текущей датой типа TIMESTAMP или DATETIME используйте следующую конструкцию:

Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT. Например:

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

Символ * означает, что необходимы все поля. Например:

Для получения доступа только к некоторому полю следует указать его имя в инструкции SELECT. Например:

Чтобы получить доступ к подмножеству строк в таблице, следует указать критерий выбора, который устанавливает конструкция WHERE. Например, чтобы выбрать имеющиеся в наличии недорогие книги о PHP, надо составить запрос: % Соответствует любому количеству символов, даже нулевых
_ Соответствует ровно одному символу

Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке, используется конструкция ORDER BY. Например:

По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки на обратный можно с помощью ключевого слова DESC:

Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно использовать их порядковые номера:

Для изменения ранее записанных в таблицу значений нужно воспользоваться командой UPDATE. Например, цену всех книг повысили на 10%:

Конструкция WHERE ограничит работу UPDATE определенным строками. Например:

Для удаления строк из базы данных используется оператор DELETE. Ненужные строки указываются при помощи конструкции WHERE. Например, какие-то книги проданы:

Если нужно удалить все записи

Для полного удаления таблицы используется:

Связь PHP с базой данных MySQL

Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу.

Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:

  • Подключение к серверу MySQL.
  • Выбор базы данных.
  • Выполнение запроса к базе данных:
  • добавление;
  • удаление;
  • изменение;
  • поиск;
  • сортировка.
  • Получение результата запроса.
  • Отсоединение от базы данных.
  • Читайте также:  Kia proceed shooting brake цена

    Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:

    После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например:

    Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.

    Пример 1

    При каждом выполнении примера 1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные, введенные пользователем.

    В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.

    Пример 2.1

    Результаты заполнения этой формы передаются в insert_book.php.

    Пример 2.2

    В примере 2.2 введенные строковые данные обработаны функцией addslashes(). Эта функция добавляет обратные слеши перед одинарными кавычками (‘), двойными кавычками ("), обратным слешем () и null-байтом. Дело в том, что по требованиям систаксиса запросов баз данных такие символы дожны заключаться в кавычки.

    Для определения количества записей в результате запроса используется функция mysql_num_rows().

    Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью функции mysql_fetch_[] для каждой записи получают ассоциативный массив.

    В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.

    Пример 3.1

    Результаты заполнения этой формы передаются в search_book.php.

    Пример 3.2

    Альтернативный вариант

    Итак, как работает архитектура Web-баз данных:

    1. Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например, пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы называется search_book.php.
    2. Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на обработку механизму PHP.
    3. PHP выполняет соединение с MySQL-сервером и отправляет запрос.
    4. Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список книг) обратно механизму PHP.
    5. Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML. После этого результат в виде HTML возвращается Web-серверу.
    6. Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть запрошенный список книг.

    Использование механизма транзакций

    Использование механизма транзакция на примере как передать деньги от одного человека другому

    SELECT … FOR UPDATE

    Если Вы запускаете несколько процессов, которые делают select запрос к одной и той же таблице, то они могут выбрать одну и ту же запись одновременно.

    Чтобы избежать вышеупомянутой ситуации необходимо выполнить не просто SELECT запрос, а его расширенную версию, о которой многие и не подозревают: SELECT … FOR UPDATE.

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

    Однако не всё так просто. Вам нужно выполнить ещё несколько условий. Во-первых, ваша таблица должна быть создана на основе архитектуры InnoDB. В противном случае блокировка просто не будет срабатывать. Во-вторых, перед выполнением выборки необходимо отключить авто-коммит запроса. Т.е. другими словами автоматическое выполнение запроса. После того как вы укажите UPDATE запрос, необходимо будет ещё раз обратиться к базе и закоммитить изменения с помощью команды COMMIT:

    Представьте что у нас есть 2 записи в таблице. Мы запускаем два параллельных скрипта с данным содержанием. В результате, первый процесс, который сможет достучаться до базы сделает выборку записи и сразу же заменит значение в поле locked на 1. В результате второй скрипт проигнорирует первую запись. В данном случае, даже если скрипты достучались бы до БД одновременно, второй скрипт всё равно не смог бы выбрать первую запись, т.к. при выборке первым процессом она будет заблокирована.

    Учебник PHP

    Практика

    Важное

    Регулярки

    Работа с htaccess

    Файлы, папки

    Сессии и куки

    Работа с БД

    Практика по работе с БД в PHP

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

    Практика

    Движок PHP

    Продвинутые БД

    Аутентификация

    Практика

    ООП и MVC

    Абстрактные классы и интерфейсы

    Трейты

    ООП Магия

    Практика

    Практика: классы как набор методов

    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс ArrayConvertor
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс TagHelper
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс FormHelper
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс TableHelper
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс SessionShell
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс CookieShell
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс FileManipulator
    • Урок №
      новая вкладка с new.code.mu
      . текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор

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

    База данных (сокращенно БД) — это место, в котором хранятся данные сайта.

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

    Читайте также:  Epox ep 9npaj sli

    База данных состоит из таблиц. Что такое таблица вы знаете из жизни: это строки и столбцы. А на пересечении строк и столбцов располагаются ячейки.

    В базах данных столбцы часто называют полями.

    Это легко можно вообразить себе, представив документ Excel. Базой данных будет являться сам документ (книга), а таблицами — каждый лист этой книги.

    PhpMyAdmin

    Для редактирования баз данных часто пользуются программой PhpMyAdmin.

    PhpMyAdmin (читается PHPмайадмин, часто пишут аббревиатуру PMA или ПМА) — это оболочка для работы с базами данных прямо у вас в браузере.

    Вы можете править содержимое таблиц, создавать новые базы данных и таблицы — и все это через веб-интерфейс, не зная SQL.

    Видео на PhpMyAdmin

    Задачи на PhpMyAdmin

    Давайте откроем PhpMyAdmin и приступим к изучению его интерфейса.

    Чтобы вам было проще с ним освоится, сделайте следующие практические задачи:

    1. Создайте базу данных test.
    2. В ней создайте таблицу users.
    3. В этой таблице сделайте 4 поля (столбца):
      • id (для него нужно поставить галочку AUTO_INCREMENT или A.I.), тип integer,
      • name, тип varchar, 32 символа,
      • age, тип integer,
      • birthday (англ. день рождения), тип date.
      • Найдите вкладку ‘вставить’ и с ее помощью вставьте несколько строк в эту таблицу При этом поле id заполнять не нужно! Оно заполнится автоматически!
      • Поредактируйте какую-нибудь запись.
      • Удалите какую-нибудь запись.
      • Поменяйте кодировку для таблицы и для всей базы данных (на utf8_general_ci).
      • Переименуйте таблицу.
      • Переименуйте базу данных.

      AUTO_INCREMENT

      Обратите внимание на то, что мы создали поле id и поставили ему галочку AUTO_INCREMENT. Это очень важный шаг!

      Теперь при вставке новой записи (строки) в таблицу это поле будет заполняться автоматически уникальным номером.

      При этом если мы удалим строку с каким-то id (например 1), то такого id больше никогда не будет.

      Зачем нужно поле id?

      Затем, чтобы мы всегда могли обратиться к конкретной строке по ее id, например с целью удаления или редактирования.

      Типы переменных

      В SQL довольно много типов переменных, но чаще всего приходится пользоваться следующими:

      • integer – целочисленный.
      • text – большое текстовое поле.
      • varchar – не очень большое текстовое поле, при этом мы должны задать его размер (он должен быть степенью двойки: 8, 16, 32, 64, 128, 256 и т.д.).
      • date — поле для хранения даты (дата хранится в SQL-формате: год-месяц-день, пример: 2013-06-24).

      Как работать с mySQL через PHP

      Работа с БД из PHP осуществляется всего лишь с помощью трех функций:

      • mysqli_connect – соединение с сервером и базой данных.
      • mysqli_query — универсальная функция отправки запросов к БД, с помощью нее можно сделать все.
      • mysqli_error — вывод ошибок.

      Далее подробнее про каждую из функций.

      Устанавливаем соединение с БД

      Данный материал есть также в виде видео: https://youtu.be/J8GFuyA_k_8

      Прежде, чем начать работать с базой данных из PHP, нужно установить соединение с сервером, на котором эта база находится.

      Делается это с помощью функции PHP mysql_connect, которая принимает 3 параметра: имя хоста (сервера), имя пользователя, под которым мы работаем с базой и пароль для этого пользователя.

      Если вы работаете на своем компьютере то это будут ‘localhost’, ‘root’ и пароль в виде пустой строки (на некоторых серверах он тоже может быть root). Если ваша база данных в интернете — то эти данные дает вам хостер.

      Давайте установим соединение с базой данных:

      Посылаем запросы к базе данных

      Запросы к базе данных представляют собой обычные строки, которые мы вставляем в функцию PHP mysqli_query (первым параметром это функция принимает переменную, в которую мы записали результат mysqli_connect, в нашем случае это переменная $link):

      Принято правило, по которому команды SQL следует писать в верхнем регистре (то есть большими буквами), а все остальное — в нижнем.

      Это относиться к командам SELECT, UPDATE, FROM, DELETE, WHERE и другим такого рода.

      Конечно, синтаксической ошибки не будет, если вы напишите их маленькими буквами, но принято большими.

      Отлавливаем ошибки базы данных

      Многие начинающие зачастую не умеют отлавливать ошибки, которые вернула база данных.

      Поэтому при работе с БД у них постоянно возникают сложности. Что-то не работает, а что — не понятно, так как ошибок они не видят, так как PHP не выводит ошибки mySQL, если ему об этом не сказать

      Чтобы вывести ошибки, следует пользоваться конструкцией or die ( mysqli_error($link) ), которую необходимо добавлять к каждому запросу к БД.

      Смотрите пример: mysqli_query($link, $query) or die( mysqli_error($link) );

      Таким образом вы сразу будете получать сообщения об ошибках синтаксиса SQL. Обратите внимание на то, что на рабочем сайте эти конструкции следует удалять, чтобы пользователи и тем более хакеры не видели ошибок БД.

      Проблемы с кодировками

      Зачастую у новичков возникает проблема с кодировками — казалось бы нормальный русский текст в базу данных записывается абракадаброй или вопросиками.

      Чтобы не было проблем с кодировками следует придерживаться простых правил:

      • Базу данных следует создавать в кодировке utf8_general_ci.
      • Документ PHP должен быть в кодировке utf8.
      • Таблицы в БД должны быть в utf8_general_ci.
      • На всякий случай сразу после команды mysqli_connect добавьте такое запрос: mysqli_query($link, "SET NAMES ‘utf8’");

      Начнем практиковаться

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

      Итак, создайте свою первую базу данных с помощью PhpMyAdmin.

      Назовите ее "test".

      Создайте в этой базе новую таблицу.

      Назовите ее "workers" (англ. работники).

      Читайте также:  Internet explorer блокирует activex

      В ней создайте 4 столбца (столбцы по другому называются поля):

      • id – тип integer, не забудьте поставить ему галочку AUTO_INCREMENT (чтобы в этом столбце номера проставлялись автоматически).
      • name (англ. имя) – тип varchar, размером в 256 знаков.
      • age (англ. возраст) — тип integer.
      • salary (англ. зарплата) — тип integer.

      Ее заполните тестовыми данными, как показано в таблице ниже (этот шаг обязателен, так как дальше все задачи будут по этой таблице):

      id name age salary
      1 Дима 23 400
      2 Петя 25 500
      3 Вася 23 500
      4 Коля 30 1000
      5 Иван 27 500
      6 Кирилл 28 1000

      Итак, у нас есть таблица с работниками фирмы, в которой указаны их имена, возрасты и зарплаты (в $). Далее мы будем работать с этой таблицей.

      Тестируем работоспособность

      Прежде чем начать работу, следует протестировать работоспособность — попробуем сделать какой-нибудь запрос к нашей базе.

      Просто скопируйте этот код и запустите его у себя:

      Если var_dump($result) вернет resource, то все работает, если же null – то возникли какие-то проблемы. в новых версиях PHP в $result будет лежать объект с данными (всегда будет непустой). Если обработать его через mysqli_fetch_assoc будет или результат или null (про mysqli_fetch_assoc см ниже или видео https://youtu.be/J8GFuyA_k_8 , которое уже было выше в пункте "Устанавливаем соединение")

      В таком случае проверьте все еще раз, уберите последовательно все ошибки PHP, если таковые есть.

      Как достать результат

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

      Однако лежит он не в той форме, которая нам нужна в PHP, а в той форме, в которой его прислала нам база.

      Достать результат в нормальном виде (в массиве) можно с помощью следующего кода:

      Как работает последняя строка?

      Функция mysqli_fetch_assoc считывает последовательно каждую строку результата, который прислала нам база.

      В цикле for мы считываем построчно результат из базы.

      Когда цикл дойдет до последней строки — mysqli_fetch_assoc вернет false и цикл for закончит свою работу.

      А результат из БД будет лежать в нормальном виде в массиве $data.

      Введение

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

      Их используют для:

      1. Регистрации и авторизации на сайте (хранят регистрационные данные).
      2. Хранения статей и комментариев к ним.
      3. Организации поиска по веб-сайту.

      В этой статье мы научимся вставлять, изменять, получать и защищать данные из БД MySQL, используя PHP.

      Есть несколько вариантов подключения к базе данных MySQL, но самые лучшие варианты — mysqli и PDO .

      Основная разница в том, что PDO может работать с огромным количеством баз данных: MySQL, Cubrid, Oracle, SQlite и так далее. А mysqli может работать только с MySQL.

      В своей статье я покажу, как работать с PDO.

      Примеры показывать буду на локальном сервере ( xampp ).

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

      Создать БД можно из панели управления хостингом, если есть такая возможность, а если нет, то из phpMyAdmin. Сравнение ставим utf8_general_ci.

      Заходим в БД и создадим таблицу users , которую будем использовать для примера. Она будет включать колонки: >, login(varchar) и pass(varchar) . ID будет первичным ключом, а также будет иметь галочку напротив AI(auto increment), что позволит каждой новой записи присваивать id на 1 больше, чем у прошлой записи. Кроме этого, не забываем проставить длину varchar ’ам и поставить сравнение utf8_general_ci к полям login и pass .

      Теперь мы имеем готовую БД и таблицу для работы с ней.

      Подключение к БД с помощью PHP

      Создаём файл index.php и прописываем:

      Мы создали подключение к БД. Подключение от PDO не нужно закрывать, оно само закрывается, когда скрипт завершает свою работу.

      Выборка данных

      Здесь я сделаю небольшое отступление. Выбирать данные можно:

      • Ассоциативным массивом

      PDO::FETCH_ASSOC — возвращает массив с названиями столбцов в виде ключей.

      PDO::FETCH_OBJ — возвращает анонимный объект со свойствами, соответствующими именам столбцов.

      Fetch() — каждый раз извлекает следующую строку.

      Продолжаем скрипт:

      Здесь мы обращаемся к массиву $row по индексу login.

      В данном случае код выведет логин всех, кто есть в таблице.

      Здесь мы обращаемся к объекту $row по login.

      В данном случае код выведет также логин всех, кто есть в таблице.

      Выборка данных по параметру + защита

      Мы можем выбирать определённые данные из таблицы. Например, мы можем выбрать все записи, где pass = 123, и тому подобные.

      Вот первый пример выборки по логину + защита:

      Можно указать несколько вопросительных знаков, а в execute перечислить замены для них через запятую.

      Вот второй пример выборки по логину + защита:

      Можно указать несколько ключей, а в execute перечислить замены для них через запятую в формате ‘ключ’ => значение .

      Второй способ использовать предпочтительнее, так как читаемость и понятность кода более понятна, чем в первом примере, но использовать можно два способа.

      Вставка данных по параметру + защита

      Теперь можем проверить таблицу. Видим, что всё сработало правильно.

      Обновление данных по параметру + защита

      Теперь можем проверить таблицу. Видим, что всё сработало правильно.

      Заключение

      Как видите, работать с PDO довольно легко. Теперь вы сами можете создавать веб-сайты с базами данных.

      Надеюсь, что вам понравилась статья, и вы получили новые знания.

      Добавить комментарий

      Ваш e-mail не будет опубликован. Обязательные поля помечены *

      *

      code