Соединение с базой данных. Файл connect_db.php
Обработка ошибки соединения с базой данных. Файл connect.php
Вывод содержимого таблицы catalogs. Файл fetch.php
Использование метода fetchAll(). Файл fetch_all.php
Параметризованный запрос. Файл prepare.php
Запросы, в которых используются параметры, передаются специальному методу
prepare(). Сам запрос, как видно, содержит параметр :catalog_id, который заполняется
на этапе выполнения методом execute(). Для заполнения параметра методу execute()
передается ассоциативный массив, ключи которого содержат названия параметров.
Параметры могут быть безымянными, в запросе они обозначаются символом вопроса ?.
Методу же execute() передается индексный массив, элементы которого заменят симво-
лы ? в параметризованном запросе. Первый знак вопроса заменяется первым элемен-
том, второй — вторым и т. д.
Еще один интересный случай представляет собой заполнение связанных таблиц. Пусть
имеется таблица news, предназначенная для хранения новостных сообщений и состоя-
щая из трех полей:
id_news — первичный ключ, снабженный атрибутом AUTO_INCREMENT;
name — название новостной позиции;
putdate — дата размещения новости.
С таблицей news связана таблица news_contents, предназначенная для хранения текста
новости и также состоящая из трех полей:
id_content — первичный ключ, снабженный атрибутом AUTO_INCREMENT;
content — содержимое новостного сообщения;
id_news — внешний ключ, содержащий значения полей id_news из таблицы news для
связывания новостного блока и текста новости.
В листинге представлены операторы CREATE TABLE, которые создают таблицы news
и news_contents.
Таблицы news и news_contents. Файл news.sql
Форма добавления новости. Файл news.html
Добавление новости
Как видно из листинга, обработчиком HTML-формы назначен файл addnews.php. В листинге также представлен обработчик HTML-формы, который осуществляет встав- ку новостного сообщения в таблицы news и news_contents.
Добавление новостного сообщения. Файл addnews.php
Так как данные передаются методом POST, то содержимое полей name и content попадает в элементы суперглобального массива $_POST['name'] и $_POST['name'] соответственно.
В начале обработчика производится проверка правильности заполнения полей формы — если хоть одно из полей остается незаполненным, процесс добавления информации приостанавливается с выдачей соответствующего предупреждения. Наличие символов в строке можно проверить при помощи функции empty(), которая возвращает TRUE, если строка пустая, и FALSE, если строка содержит хотя бы один символ.
Основная особенность добавления данных в связанные таблицы заключается в том, что
для добавления записи во вторую таблицу news_content необходимо знать первичный
ключ news_id, который был сгенерирован по механизму AUTO_INCREMENT для только что
созданной записи в таблице news. Получить его можно, обратившись к методу lastInsertId() класса PDO.
После того как записи добавлены, следует вернуться на главную страницу HTML- формы или страницу, где выводятся новостные позиции. Для этого браузеру отправляется HTTP-заголовок Location с адресом страницы, на которую следует осуществить переход.
на главную сниппетов