Добавление данных в mysql с помощью php. Добавление изображений в базу данных MySQL через PHP. Как вставить запись с помощью PHP
От автора: эх, из песни слов не выкинешь! Но их можно удалить, обновить или вставить другие. Главное, чтобы слова были внесены в базу данных. Сегодня мы расскажем, как происходит запись данных в MySQL и как это сделать правильно, чтобы песня звучала!
Добавление записей c помощью phpMyAdmin
В оболочке phpMyAdmin для администрирования СУБД MySQL реализован «облегченный» функционал добавления новый записей в таблицы базы данных. Из-за своей простоты он идеально подходит как для зеленых «чайников», так и для «ленивых» профессионалов.
Чтобы занести новую информацию в таблицу, следует зайти в программу под правами администратора. Затем в списках слева выбрать нужную базу и таблицу. После чего в верхнем меню перейти через пункт «Вставить».
После этого, чтобы внетсти запись в БД MySQL, заполняем в следующем окне для всех столбцов поля «Значение» и нажимаем внизу «Ок».
На приведенном выше скриншоте видно, что модифицируемая таблица «Animals» состоит из двух столбцов (полей): id и name. Во втором разделе указан тип каждого из столбцов. Нам нужно внести значение только для поля name, поскольку столбец id является первичным ключом, и для него при создании таблицы задан автоинкремент. Это значит, что значение поля id будет генерироваться MySQL автоматически, прибавляя к предыдущему целому числовому значению 1.
Чтобы узнать, какое поле записей данных в MySQL является первичным ключом (primary key), в phpMyAdmin перейдите меню (при выбранной таблице слева в списке) на вкладку верхнего меню «Структура». Здесь приводится описание всех полей таблицы, их тип и дополнительные характеристики.
Вставка данных с помощью SQL-запросов
Но phpMyAdmin – это всего лишь оболочка, а настоящие администраторы «общаются» с сервером MySQL с помощью языка структурированных запросов. То есть «разговаривают» с ним на языке SQL. Так как мы стремимся стать настоящими профессионалами, то немного «окунемся» в изучение команд SQL в рамках рассматриваемой темы. Вот запрос, введя который в поле «SQL», вы создадите такую же базу данных:
CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));
CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT , name CHAR (30 ) NOT NULL , PRIMARY KEY (id ) ) ; |
После создания таблицы и запись данных в базу MySQL (через вкладку «Вставить») программа сообщит вам, что в animals добавлена строка со значением идентификатора 1. А немного ниже в окне редактора будет выведен код запроса, который за нас сформировала оболочка и отослала серверу БД.
Код запроса:
INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Cat");
INSERT INTO ` my_db1 ` . ` animal ` (` id ` , ` name ` ) VALUES (NULL , "Cat" ) ; |
Давайте более подробно изучим его. В SQL для вставки новой строки в таблицу используется оператор INSERT. Он сообщает серверу, что в таблицу базы данных (my_db1 . animal) нужно в поля id и name вставить указанные значения (VALUES (NULL, ‘Cat’).
Обратите внимания, что столбцу id мы указываем не числовое значение, а NULL, поскольку для этого поля мы «включили» автозаполнение (автоинкремент).
Как вставить запись с помощью PHP
Все рассмотренное нами является лишь «прелюдией» к основному действу, в котором выходит на сцену «его высочество» серверный язык программирования PHP. Именно благодаря ему MySQL как СУБД получила такое распространение в Сети.
На связке этих двух интернет-технологий построена большая часть всемирной паутины. Куда ни гляньте, везде вы найдете их: в современных CMS, «самописных» движках и на сервере.
Не удивительно, что для записи данных в MySQL PHP предоставляет столько встроенных функций. Но мы остановимся на самых главных из ним. Вот код, который добавляет новое «животное» в таблицу animals. Если сильно постараться, то таким образом можно собрать целый зверинец:)
$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root")){ echo "Hello!!"; } mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")"; mysql_query($query_str); mysql_close();
$ con_str = mysql_connect ("localhost" , "root" , "" , "db1" ) ; if (mysql_connect ("localhost" , "root" ) ) { echo "Hello!!" ; mysql_select_db ("db1" , $ con_str ) ; $ query_str = "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")" ; mysql_query ($ query_str ) ; mysql_close () ; |
Этот код нужно вставить в файл PHP и разместить его на стороне сервера.
С помощью функции mysql_connect() мы коннектимся к серверу баз данных MySQL. В качестве аргументов функция принимает хост, имя пользователя СУБД, пароль и название базы, к которой нужно подключиться. У нас указан пустой пароль, поскольку мы используем сервер, установленный на локальной (клиентской) машине.
Для демонстрации всех описанных примеров записи в базу MySQL с помощью PHP мы применяли «джентельменский набор» от Денвера. В него входит локальный сервер Apache, сервер MySQL, phpMyAdmin и еще несколько полезных средств создания и тестирования программного кода.
Затем в логическом блоке if мы проверили наличие соединения к серверу БД. После чего в функции mysql_select_db() мы обозначили базу, к которой будем коннектиться. С помощью функции mysql_query() запустили на выполнение SQL-запрос, записанный в переменную $query_str. И в конце закрыли установленное соединение (функция mysql_close()). Теперь, если мы заглянем в свой зверинец (таблицу animal), то обнаружим там нового «питомца».
Для его записи в MySQL PHP «любезно» предоставил весь необходимый набор функций. Главное, на чем «обжигаются» новички при использовании SQL в программном коде – это неправильное написание запросов, нарушение синтаксиса и чередования знаков для экранирования (кавычек).
Чтобы избежать появления на своей голове лишних «седых» волос, лучше проверять правильность написания запроса с помощью phpMyAdmin. Для этого разместите код SQL в редакторе программы и запустите его на выполнение. Если что-то не так, то приложение начнет «ругаться», выведет сообщение красного цвета и укажет месторасположение ошибки.
Как видите, с помощью MySQL можно и свой зверинец «собрать», и правильно изменить слова любой «песни». И для записи в базу MySQL PHP подходит идеально, поэтому мы советуем вам завести «тесную» дружбу с этим «великим» языком программирования!
В этом посте хочу рассказать, как передать в Базу Данных, введенные данные в форму
. И так мы создаем простую форму, где у нас будет два поля: имя пользователя и его электронная почта:
Эта форма может применятся для регистрации нового пользователя, для рассылки новостей, для сбора статистики, да для чего угодно... В общем в эту форму пользователь забивает свои данные: имя и почту, нажимает на кнопку и дальше данные переходят в php скрипт:
$name = $_POST["name"]; $email = $_POST["email"]; $result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")"); if ($result) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }
Что же в этом скрипте происходит? Сейчас разберемся!
Введенные в форму данные, методом POST переходят в php скрипт (который написан выше), и при помощи глобального массива $_POST данные формируются в переменные $name и $email:
$name = $_POST["name"]; $email = $_POST["email"];
После того, как переменные готовы для занесения в базу, составляем запрос. Но прежде Ваши скрипты должны быть уже подключены к БД, как подключиться к БД, я писал в этой теме: . Сам запрос выглядит так:
$result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")");
В этом коде мы обозначили, что в ячейки name и email , которые находятся в таблице user , будут добавлены следующие переменные: $name и $email .
Далее, если все прошло успешно, мы получим сообщение из условия:
Данные успешно сохранены!
Если же возникли какие то проблемы и данные не были занесены, мы получим сообщение об ошибке:
Произошла ошибка, пожалуйста повторите попытку.
Вот и все!
*** *** *** *** ***
При желании можно добавить больше полей для ввода информации, например нам необходимо добавить поле для ввода города пользователя. У нас уже есть готовый скрипт (написан выше), теперь просто добавим поле Ваш город
, переменную назовем: $city . И так в форму ввода данных, после:
Ваш E-mail:
добавляем:
Ваш город:
В php скрипте, после:
$email = $_POST["email"];
добавляем:
$city = $_POST["city"];
Ну и конечно в запросе добавляем тоже, вот так:
$result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")");
Вот, что должно получится в итоге:
Форма ввода:
Скрипт:
$name = $_POST["name"]; $email = $_POST["email"]; $city = $_POST["city"]; $result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")"); if ($result == true) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }
Как видите ни чего сложного! При необходимости можно добавить ещё поле, и ещё, и ещё...
И приведены
. А сейчас мы поговорим, как добавлять изображения в базу MySQL через форму, используя PHP
.
Создание поля в MySQL базе для добавления изображения
Для начала хочу сказать, что для хранения изображений в базе данных MySQL необходимо определить одно из полей таблицы как производное от типа BLOB.
Сокращение BLOB означает большой двоичный объект. Тип хранения данных BLOB обладает несколькими вариантами:
- TINYBLOB — Может хранить до 255 байт
- BLOB может хранить до 64 килобайт информации
- MEDIUMBLOB — до 16 мегабайт
- LONGBLOB до 4 гигабайт
Для хранения файла изображения в базе данных необходимо прочитать файл в переменную и создать запрос на добавление данных в таблицу.
Подготовка формы на странице для добавления изображения в базу данных MySQL
В моём случае задача была добавлять два изображения в базу через форму, используя PHP . У нас есть форма с двумя полями и кнопкой отправить:
form name=»form1″ method=»post» action=»add_image.php»
enctype=»multipart/form-data»
Напомню, что атрибут action указывает файл, который будет выполнять загрузку файлов изображения. Атрибут enctype указывает на способ кодирования содержимого формы и информацию о подгрузке файлов. Посмотрите, как правильно заполнять атрибут enctype чтобы, избежать .
Примечание: поддержка загрузки нескольких файлов была введена в версии 3.0.10.
Написание кода PHP для сохранения изображения в базе данных MySQL
Так как мы отправляем два файла в атрибуте name после слова указываем «userfile» с квадратными скобками, этим мы даем понять, что отправляем несколько файлов с помощью массива, в котором находятся атрибуты файлов:
$_FILES[‘userfile’][‘name’]
Оригинальное имя файла на клиентской машине.
$_FILES[‘userfile’][‘type’]
mime-тип файла, если браузер предоставил эту информацию.
Пример: "image/gif" .
$_FILES[‘userfile’][‘size’]
$_FILES[‘userfile’][‘tmp_name’]
Временное имя файла, под которым загруженный файл был сохранён на сервере.
Как получить значения каждого файла?
К примеру, предположим, что отправлены файлы с именами /home/test/1.jpg и /home/test/2.jpg.
В этом случае $_FILES[‘userfile’][‘name’]
будет содержать значение 1.jpg,
а $_FILES[‘userfile’][‘name’]
— значение 2.jpg
Аналогично, $_FILES[‘userfile’][‘size’] будет содержать значение размера файла 1.jpg, и так далее. Теперь рассмотрим код файла add_image.php, который был указан в атрибуте формы action .
1024*1024||$image_size==0) { $ErrorDescription="Каждое изображение не должно привышать 1Мб! Изображение в базу не может быть добавлено."; return ""; } // Если файл пришел, то проверяем графический // ли он (из соображений безопасности) if(substr($_FILES["userfile"]["type"][$num], 0, 5)=="image") { //Читаем содержимое файла $image=file_get_contents($_FILES["userfile"]["tmp_name"][$num]); //Экранируем специальные символы в содержимом файла $image=mysql_escape_string($image); return $image; }else{ ErrorDescription="Вы загрузили не изображение, поэтому оно не может быть добавлено."; return ""; } }else{ $ErrorDescription="Вы не загрузили изображение, поле пустое, поэтому файл в базу не может быть добавлен."; return ; } return $image; } ?>
Итак, в этой статье мы говорили о том, как сохранить изображение в базе данных MySQL, используя PHP.
Все модули сайта или веб приложения, где требуется внести и записать некоторые данные (например, имя, возраст, адрес и т.д.) используют простую функцию на языке mysql INSERT INTO `name_base` (name,value1,value2) VALUES (‘Vasya’,’1’,’2’);
Все переменные вносятся в базу данных согласно значениям, которые мы задали в первых скобках. Важно учитывать кодировку скрипта обработчика, базы данных и файла конфигурации. Желательно использовать самую распространенную кодировку UTF-8.
Следует учитывать, что записывать в базу можно двумя способами.
Первый способ если мы не задаем изначально имена ячейки таблиц базы данных. Тогда мы должны перечислить все переменные для каждой ячейки, а именно сколько ячеек в таблице базы данных, столько переменных должно быть перечислено в скобках после значения VALUE.
Например:
В таблице базы данных четыре ячейки. Значит после элемента VALUE (..) в скобках должны быть перечислены все четыре переменные. И еще один момент: если переменная не существует, допустим это необязательный параметр. То пишем просто пустое значение в кавычках ‘’,
"INSERT INTO `name_base` VALUES (NULL, `".$name."`,``,`2`)"; // третье пустое значение пишется в кавычках
Но у данного запроса есть небольшие недостатки. Если добавить одну ячейку или две ячейки в таблицу базы данных, то данный запрос вернет ошибку. Потому, что в этом методе перечисление всех ячеек в запросе обязательно.
Второй способ
если после запроса INSERT INTO `name_base` (…) перечислить все ячейки после имени базы данных. Пример уже рассмотрен чуть выше. Если забыли, напишем заново:
"INSERT INTO `name_base`(`name`,`value`,`value2`) VALUES (NULL, `".$name."`,``,`2`)";
Здесь мы перечислили все ячейки (name,value1,value2) . И если добавить дополнительно еще одну две ячейки в таблицу базы данных, то синтаксис запроса менять не придется. Но если только нам не нужно добавлять сразу в одном запросе те самые дополнительные переменные, которые нам нужны для тех самых новых созданных ячеек.
Такая ошибка вылетает очень часто, после небольшого изменения на сайте. Допустим, администратор добавил дополнительную ячейку в базу, допустим status. А изменить модуль обработчик скрипта не успел, или просто элементарно забыл. Но некоторые сайты имеют очень сложную структуру, и на поиск ошибки может уйти масса времени и сил. Поэтому желательно использовать второй метод записи в базу данных. Хотя такого рода ошибки чаще допускают начинающие веб программисты.
Php запись в базу данных mysql. Практические примеры
Итак, теперь добрались до самой сути при работе с запросами к базе данных. Все будем делать на практических примерах. Создадим простой скрипт для записи комментариев, которые будут оставлять посетители сайта.
Для начала создадим таблицу msg в базе данных с четырьмя ячейками. В первой ячейке пишем id комментария. Число символов в ячейке до десяти символов с параметром auto-increment. Это автоматический параметр будет меняться при каждом добавлении комментария на +1.
Следующая ячейка name имя пользователя. Число символов - до двести - триста символов на ваш выбор, параметр char. Затем ячейка coment - в эту ячейку будем заносить сам текст комментария. Если хотите записывать большие тексты комментариев, то можно задать параметр text - тогда можно заносит просто огромные тексты, более пятьсот тысяч символов или задайте параметр tinytext, тогда будет влезать чуть меньше символов, но работать будет чуть быстрее.
Но в нашем случае, будем иметь в виду, что посетители не будут писать огромные тексты. И поэтому ограничимся и будем фиксировать две тысячи символов с параметром varchar, для записи строковых значений.
В последнюю ячейку будем писать дату внесения записи текста комментария. Писать будем в числовом формате в секундах, при помощи функции текущей даты и времени time(); Для простоты, функцию зададим в переменную $time=time(); И создадим ячейку в базе данных. Назовем одноименно time с параметром int (для числовых значений). Пропишем число символов - лучше одиннадцать (с небольшим запасом на будущее:-).
Дамп базы данных следующий:
Структура таблицы `msg` -- CREATE TABLE IF NOT EXISTS `msg` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(250) NOT NULL, `coment` varchar(2000) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Все, таблицу для комментариев создали. Теперь пишем форму для того чтобы написать комментарий и сам скрипт обработчик. HTML -код формы для внесения комментария следующий.
В этой статье мы рассмотрим, как использовать PHP для вставки строк в базу данных MySQL.
Шаг 1 — Создание таблицы
Сначала нужно создать таблицу для данных. Это простая процедура, которую можно выполнить с помощью phpMyAdmin в панели управления хостингом.
После входа вы phpMyAdmin вы увидите такой интерфейс:
Создадим в базе данных u266072517_name таблицу с именем Students, нажав на кнопку «Создать таблицу». После этого мы увидите новую страницу, на которой задаем все необходимые параметры таблицы:
Это самая простая настройка, которую можно использовать для таблицы и получения дополнительной информации о структуре таблиц / баз данных.
Параметры столбцов:
- Name — это имя столбца, которое отображается в верхней части таблицы.
- Type — тип столбца. Например, мы выбрали varchar, потому что будем вводить строковые значения.
- Length/Values — используется для указания максимальной длины, которую может иметь запись в этом столбце.
- Index
— мы использовали «Первичный» индекс для поля «ID». При создании таблицы рекомендуется применять в качестве первичного ключа только один столбец. Он используется для перечисления записей в таблице и требуется при настройке таблицы. Я также отметил «A_I», что означает «Auto Increment» — параметр автоматического присваивания номера записей (1,2,3,4 …).
Нажмите кнопку «Сохранить», и таблица будет создана.
Шаг 2. Написание PHP-кода для вставки данных в MySQL.
Вариант 1 — метод MySQLi
Сначала необходимо установить соединение с базой данных. После этого используем SQL-запрос INSERT. Полный пример кода:
" . mysqli_error($conn); } mysqli_close($conn); ?>
Первая часть кода (3 — 18 строка) предназначена для подключения к базе данных.
Начнем со строки № 19:
$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", "[email protected]")";
Она вставляет данные в базу MySQL. INSERT INTO — это оператор, который добавляет данные в указанную таблицу. В нашем примере данные добавляются в таблицу Students.
Далее идет перечисление столбцов, в которые вставляются значения: name, lastname, email. Данные будут добавлены в указанном порядке. Если бы мы написали (email, lastname, name), значения бы были добавлены в другом порядке.
Следующая часть — это оператор VALUES. Здесь мы указываем значения для столбцов: name = Thom, lastname = Vial, email = [email protected].
Мы запустили запрос с использованием PHP-кода. В программном коде SQL-запросы должны быть экранированы кавычками. Следующая часть кода (20-22 строка) проверяет, был ли наш запрос успешным:
if (mysqli_query($conn, $sql)) { echo "New recordcreatedsuccessfully"; }
Этот код выводит сообщение об успешном выполнении запроса.
И последняя часть (22 — 24 строка) отображает уведомление, если запрос не был успешным:
else {
echo "Error: " . $sql . "
" . mysqli_error($conn);
}
Вариант 2 — метод объекта данных PHP (PDO)
Сначала нам нужно подключиться к базе данных путем создания нового объекта PDO. При работе с ним будем использовать различные методы PDO. Методы объектов вызываются следующим образом:
$the_Object->the_Method();
PDO позволяет «подготовить» SQL-код до его выполнения. SQL-запрос оценивается и «исправляется» перед запуском. Например, простейшая атака с использованием SQL-инъекции может быть выполнена через простое введение SQL-кода в поле формы. Например:
Так как это синтаксически правильный SQL- код, точка с запятой делает DROP DATABASE user_table новым SQL-запросом, и пользовательская таблица удаляется. Подготовленные выражения (связанные переменные) не позволяют, чтобы точка с запятой и кавычки завершали исходный запрос.Поэтому команда DROP DATABASE никогда не будет выполнена.
Чтобы использовать подготовленные выражения, нужно написать новую переменную, которая вызывает метод prepare() объекта базы данных.
Корректный код:
getMessage(); } // Устанавливаем переменные для персоны, которую мы хотим добавить в базу данных $first_Name = "Thom"; $last_Name = "Vial"; $email = "[email protected]"; // Создаем переменную, которая вызывает методобъекта базы данных 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 recordcreatedsuccessfully"; } else { echo "Unable to createrecord"; } // В этой точке можно изменить данные переменных и выполнить запрос, чтобы добавить другие данные в базу data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "[email protected]"; $my_Insert_Statement->execute(); // Выполняем снова, когда переменная изменена if ($my_Insert_Statement->execute()) { echo "New recordcreatedsuccessfully"; } else { echo "Unable to createrecord";
В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Также существует метод bindValue(), который сильно отличается от предыдущего.
- bindParam() — этот метод оценивает данные при достижении метода execute(). В первый раз, когда скрипт достигает метода execute(), он видит, что $first_Name соответствует «Thom». Затем связывает это значение и запускает запрос. Когда скрипт достигает второго метода execute(), он видит, что $first_Name теперь соответствует «John». После чего связывает это значение и снова запускает запрос с новыми значениями. Важно помнить, что мы однажды определили запрос и повторно используем его с разными данными в разных точках скрипта.
- bindValue()
— этот метод оценивает данные, как только достигается bindValue(). Поскольку для $first_Name было установлено значение «Thom», при достижении bindValue(), оно будет использоваться каждый раз, когда вызывается метод execute() для $my_Insert_Statement.
Обратите внимание, что мы повторно используем переменную $first_Name и присваиваем ей новое значение во второй раз. После запуска скрипта в БД будут указаны оба имени, несмотря на то, что переменная $first_Name в конце скрипта имеет значение «John». Помните, что PHP проверяет весь скрипт, прежде чем запустить его.
Если вы обновите скрипт, чтобы заменить bindParam на bindValue, вы дважды вставите в базу данных «Thom Vial», а John Smith будет проигнорирован.
Шаг 3 — подтверждение успешного выполнения и решение проблем
Если запрос на вставку строк в базу был успешным, мы увидим следующее сообщение:
Устранение распространенных ошибок
MySQLi
В любом другом случае будет отображено сообщение об ошибке. Например, давайте сделаем в коде одну синтаксическую ошибку, и мы получим следующее:
Первая часть кода в порядке, соединение было успешно установлено, но SQL-запрос не прошел.
"Error: INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]") You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Была допущена синтаксическая ошибка, которая вызвала сбой скрипта. Ошибка была здесь:
$sql = "INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")";
Мы использовали фигурные скобки вместо обычных. Это неверно, и скрипт выдал синтаксическую ошибку.
PDO
В строке 7 соединения PDO для режима ошибок установлено «display all exceptions». Если задано другое значение, и запрос не удался бы, мы не получили бы никаких сообщений об ошибках.
Данную настройку следует использовать только при разработке скрипта. При ее активации могут отображаться имена базы данных и таблиц, которые лучше скрыть в целях безопасности. В описанномвыше случае, когда вместо обычных скобок использовались фигурные, сообщение об ошибке выглядит так:
Fatal error: Uncaughtexception "PDOException" with message "SQLSTATE: Syntax error or accessviolation: 1064 You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Другие возможные проблемы:
- Неверно указаны столбцы (несуществующие столбцы или орфографическая ошибка в их именах).
- Один тип значения присваивается столбцу другого типа. Например, если попытаться вставить число 47 в столбец Name, то получим ошибку. В этом столбце необходимо использовать строковое значение. Но если бы мы указали число в кавычках (например, «47») то сработало бы, потому что это строка.
- Попытка ввести данные в таблицу, которая не существует. А также допущенная орфографическая ошибка в имени таблицы.
После успешного ввода данных мы увидим, что они добавлены в базу данных. Ниже приведен пример таблицы, в которую добавили данные.