14:25 | |
Запись в Базу Данных MySQL, Используя PHP-кодВ этом руководстве вы узнаете, как происходит добавление записи в таблицу MySQL (INSERT) с использованием PHP. Мы рассмотрим два метода: MySQLi и PDO. Но прежде чем приступим непосредственно к реализации инструкции по добавлению записи с помощью PHP в базу даннных MySQL, нам понадобится доступ к панели управления хостингом. На примере представим всем знакомый HOSTINGER, по аналогии все с локальным сервером, но без панели. Но ведь мы хотим свой сайт запихать на Хостинг? Если вы сомневаетесь или не знаете, как настроить подключение к MySQL, вы можете ознакомиться с этим руководством по PHPMySQL, которое охватывает наиболее важные этапы работы с PHP и базами данных.
Создание Таблицы (По необходимости)Сразу нам надо создать таблицу для ваших данных. Если она у вас уже есть, переходите к следующему разделу. Процедура на деле простая. Создать таблицу можно в phpMyAdmin из вашей панели управления хостингом. Аналогично через PhpMyAdmin у себя на ПК! После входа на страницу phpMyAdmin вы увидите подобную картину: Давайте создадим таблицу с названием Phone для нашей базы данных table_name. Создать новую таблицу можно, нажав на кнопку Create Table. После этого вы увидите новую страницу со всеми необходимыми полями для ввода данных. Поскольку создание таблицы не основная тема этого руководства, мы не будем углубляться в подробности. Если вам нужно больше информации о структуре таблицы/базы данных и о том, какие настройки вы можете использовать для каждого столбца, рекомендуем обратиться к официальной документации phpMyAdmin (англ.). Здесь приведём лишь несколько простых пояснение столбцов, которые мы будем использовать:
Нажмите Save, чтобы сохранить вашу таблицу. Создание PHP Кода и Добавление Записи в Таблицу MySQL (Insert)Есть два способа вставить данные в вашу базу данных MySQL. Метод PHP MySQLi и PHP Data Object, или PDO. Метод с MySQLiПрежде всего, нужно установить соединение с базой данных. После этого мы можем продолжить с SQL запросом на добавление записи в таблицу MySQL — INSERT. Ниже показан полный пример PHP кода с методами подключения и вставки:
Первая часть кода (строки 3 – 18) касается подключения к базе данных. Мы не станем углубляться, так как у нас есть отдельное подробное руководство по этой теме. Если вы хотите знать, что означает каждая строка, читайте, как подключиться к базе данных. Начнём со строки 19:
Это наиболее важная строка PHP кода, поскольку именно она отвечает за добавление записи в таблицу MySQL. INSERT INTO — это выражение, которое добавляет запись в указанную таблицу базы данных MySQL. В нашем примере мы добавляем данные в таблицу Students. Двигаясь дальше, в скобках, мы указываем имена столбцов таблицы, в которые хотим добавить значения: (name, lastname, email). Данные будут добавлены в определённом порядке. Если мы напишем (email, lastname, name), значения будут добавлены в неправильном порядке. Следующая часть — выражение VALUES. Здесь мы задаём наши значения в ранее указанные поля. Таким образом, каждый столбец получит своё значение. Например, в нашем случае это будет что-то вроде: name = Test, lastname = Testing, email = Testing@testing.com. Также стоит отметить, что мы только что выполнили SQL-запрос с использованием кода PHP. SQL-запросы должны быть заключены в кавычки. В нашем примере всё между кавычками и записанное после $sql = является SQL-запросом. Следующая часть кода (20 – 22 строки) проверяет успешность нашего запроса:
Мы увидим это сообщение, если запрос выполнен успешно. И последняя часть ( строки 22 – 24) демонстрирует пример другого сообщения.
Вы увидите подобное сообщение в случае возникновения ошибки при попытке отправить запрос. Метод с PHP Data Object (PDO)Как и в предыдущем примере, нам нужно прежде всего выполнить подключение к базе данных, которое производится при создании нового объекта PDO. Как это сделать, показано в уже не раз упомянутом руководстве. Поскольку подключение к базе данных MySQL является объектом PDO, мы должны использовать различные PDO методы (любую функцию, которая является частью любого объекта) для подготовки и запуска запросов. Методы объектов вызываются слудеющим образом: $the_Object->the_Method(); PDO позволяет вам подготовить SQL-код перед его выполнением. Перед запуском SQL-запрос оценивается и корректируется. Не секрет, что взломщики могут модифицировать запрос. SQL-инъекция может быть осуществлена просто путём ввода SQL-кода в поле формы. Например:
Поскольку SQL-код синтаксически правильный, точка с запятой делает из DROP DATABASE user_table новый SQL-запрос, а ваша таблица пользователей удаляется. Подготовляемые запросы, также известные как связываемые переменные не позволят завершить запрос, использовав символы “ и ;. Как результат, вредоносная инструкция DROP DATABASE не будет выполнена. Всегда используйте подготовляемые запросы, когда отправляете или получаете данные из базы данных с PDO Чтобы использовать подготовляемые запросы, вы должны написать новую переменную, которая вызывает метод prepare() объекта базы данных. В правильном виде код выглядит так:
<?php $servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; // Создаём новое соединение с базой данных MySQL с использованием PDO, $my_Db_Connection - это объект try { $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; } catch (PDOException $error) { echo 'Connection error: ' . $error->getMessage(); } // Задаём переменные для человека, которого мы хотим добавить в базу данных $first_Name = "Test"; $last_Name = "Testing"; $email = "Testing@testing.com"; // Здесь мы создаём переменную, которая вызывает метод prepare() объекта базы данных // SQL-запрос, который вы хотите запустить, вводится как параметр, а плейсхолдеры записываются следующим образом - :placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Теперь мы сообщаем скрипту, на какую переменную фактически ссылается каждый плейсхолдер, используя метод bindParam() // Первый параметр - это плейсхолдер в приведённом выше выражении, второй параметр - это переменная, на которую он должен ссылаться $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Выполните запрос, используя данные, которые мы только-что определили // Метод execute() возвращает TRUE, если запрос был выполнен успешно и FALSE в противном случае, позволяя вам создавать собственные сообщения if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; } // На этом этапе вы можете изменить данные переменных и выполнить запрос снова, чтобы добавить больше данных в БД. $first_Name = "John"; $last_Name = "Smith"; $email = "john.smith@email.com"; $my_Insert_Statement->execute(); // Выполните снова с другими переменными if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; } В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Есть так же метод bindValue(), отличающийся от предыдущего. Обратите внимание, что мы повторно используем переменную $first_Name и задаём ей новое значение во второй раз. Если вы проверите свою базу данных после запуска этого скрипта, там будут оба заданных имени, даже если переменная $first_Name в конце скрипта равна “John”. Помните, что PHP оценивает содержимое всего скрипта перед его выполнением. Если вы измените свой скрипт, заменив bindParam на bindValue, вы добавите в базу MySQL “Test Testing” дважды, а John Smith будет проигнорирован. Проверка Статуса Выполнения и Устранение Распространённых ОшибокЕсли запрос, который мы выполнили и вставили в базу данных MySQL, был успешным, мы увидим следующее сообщение: Connect Successfully New record created successfully Устранение Распространённых ОшибокЕсли же запись содержит ошибку, вы увидите соответствующее сообщение. Но не волнуйтесь, есть множество вариантов, как можно устранить эти ошибки mySQL. MySQLiЕсли вы столкнулись с ошибкой, работая с MySQLi, причина скорее всего в неправильном синтаксисе. Для примера давайте сделаем одну синтаксическую ошибку в нашем коде. В результате мы увидим что-то вроде этого: Как мы видим, первая часть кода в порядке, подключение было успешно установлено, но с нашим SQL-запросом не всё так гладко. Допущена синтаксическая ошибка, которая привела к невозможности выполнения нашего скрипта. Ошибка была допущена здесь: Мы использовали фигурные скобки вместо простых. Поскольку это неправильно, наш скрипт выдал синтаксическую ошибку. PDOВ строке 7 подключения PDO, режим обработки ошибок установлен в «display all exceptions» (отображать все исключения). Если вы уберёте это из скрипта и запрос потерпит неудачу, вы не получите никакого сообщения об ошибке. Со включёнными исключениями, будут отображаться конкретные возникшие проблемы. Тем не менее этот режим лучше использовать при разработке скриптов, так как в случае попытки получить несанкционированный доступ к вашим данным он может выявить имена баз данных и таблиц. Если же причиной стала синтаксическая ошибка, как в примере с фигурными скобками, сообщение будет выглядеть примерно так: Другие проблемы, с которым вы можете столкнуться: Все эти ошибки могут быть исправлены, следуя руководствам по исправлению ошибок или журнала ошибок (англ.). В случае успешного добавления, наши данные должны появиться в базе. Вот пример таблицы, в которую мы добавили данные, если смотреть в phpMyAdmin. ЗаключениеУверенны, что знание того, как происходит добавление записи в таблицу MySQL пригодится, как тем, кто только учится программировать, так и начинающим разработчикам. В этом руководстве вы узнали, как использовать PHP для добавления записей в базу данных MySQL с использованием MySQLi и PDO. Мы также рассмотрели распространённые ошибки и их решения. | |
|
Всего комментариев: 0 | |