Php запись в бд mysql из формы. Запрос SQL на добавление и удаление записей


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

Шаг первый: Создание базы данных в MySQL

Открываем phpMyAdmin (входит в базовый пакет Denwer `а), и создаем базу с названием "test_base ", кодировку выбираем "cp1251_general_ci ".

Шаг второй: Создание таблицы в MySQL с помощью SQL-запроса

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

Создаем таблицу с названием "test_table " и с шестью полями с названиями:
"name " - здесь будут храниться имена пользователей;
"email " - здесь будут храниться адреса электронных ящиков пользователей;
"theme " - здесь будет храниться тема сообщения;
"message " - здесь будут храниться сообщения;
"data " - здесь будет храниться дата отправки сообщения;
"id " - идентификационный номер записи (строки), ключевое поле.

SQL-запрос:
create table test_table(
id int(11) not null auto_increment,
name varchar(255) not null,
email varchar(255) not null,
theme varchar(255) not null,
message text not null,
data date not null,
primary key (id)
);

Шаг третий: Создание формы

index.html:

Форма с сохранением в MySQL

Пример формы с сохранением данных в MySQL

























Отправка запроса
Имя:
E-Mail:
Тема сообщения:
Сообщение:
























Шаг четвертый: Создание обработчика формы "save_form.php " с сохранением полученных данных в MySQL

save_form.php:





/* Таблица MySQL, в которой будут храниться данные */
$table = "test_table";

/* Создаем соединение */

/* Определяем текущую дату */
$cdate = date("Y-m-d");

/* Составляем запрос для вставки информации в таблицу
name...date - название конкретных полей в базе;
в $_POST["test_name"]... $_POST["test_mess"] - в этих переменных содержатся данные, полученные из формы */
$query = "INSERT INTO $table SET name="".$_POST["test_name"]."", email="".$_POST["test_mail"]."",
theme="".$_POST["test_theme"]."", message="".$_POST["test_mess"]."", data="$cdate"";

/* Закрываем соединение */
mysql_close();

/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("


Данные успешно сохранены!



Вернуться назад
");

Шаг пятый: Вывод сохраненных данных "view_data.php "

view_data.php:

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test_base"; // название базы данных


$table = "test_table";

/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Составляем запрос для извлечения данных из полей "name", "email", "theme",
"message", "data" таблицы "test_table" */
$query = "SELECT id, name, email, theme, message, data FROM $table";

/* Выполняем запрос. Если произойдет ошибка - вывести ее. */


echo ("

Вывод данных из MySQL

Вывод ранее сохраненных данных из таблицы MySQL










");



echo "

\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n\n";
}

Echo ("

# Дата обращения Имена пользователей E-Mail пользователей Тема сообщения Сообщения пользователей
".$row["id"]."".$row["data"]."".$row["name"]."".$row["email"]."".$row["theme"]."".$row["message"]."
\n");

/* Закрываем соединение */
mysql_close();

Шаг шестой: Удаление записей из базы данных "del_data.php "

del_data.php:

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test_base"; // название базы данных

/* Таблица MySQL, в которой хранятся данные */
$table = "test_table";

/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Если была нажата ссылка удаления, удаляем запись */
$del = $query = "delete from $table where (id="$del")";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());



/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());

$row = mysql_num_rows($res);

/* Выводим данные из таблицы */
echo ("

Вывод и удаление данных из MySQL

Вывод и удаление ранее сохраненных данных из таблицы MySQL











");

/* Цикл вывода данных из базы конкретных полей */
while ($row = mysql_fetch_array($res)) {
echo "

\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
/* Генерируем ссылку для удаления поля */
echo "\n";
echo "\n";
}

Echo ("

# Дата обращения Имена пользователей E-Mail пользователей Тема сообщения Сообщения пользователей Удаление
".$row["id"]."".$row["data"]."".$row["name"]."".$row["email"]."".$row["theme"]."".$row["message"]."Удалить
\n");

/* Закрываем соединение */
mysql_close();

Шаг седьмой: Редактирование и обновление записей в базе "update_data.php "

update_data.php:

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test_base"; // название базы данных

/* Таблица MySQL, в которой хранятся данные */
$table = "test_table";

/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());

/* Если была нажата кнопка редактирования, вносим изменения */
if(@$submit_edit) {
$query = "UPDATE $table SET name="$test_name", email="$test_mail", theme="$test_theme", message="$test_mess" WHERE id="$update"";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die (mysql_error());
}

/* Заносим в переменную $res всю базу данных */
$query = "SELECT * FROM $table";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Узнаем количество записей в базе данных */
$row = mysql_num_rows($res);

/* Выводим данные из таблицы */
echo ("

Редактирование и обновление данных

Редактирование и обновление данных в таблице MySQL


");

/* Цикл вывода данных из базы конкретных полей */
while ($row = mysql_fetch_array($res)) {
echo "

\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "
#".$row["id"]."
".$row["data"]."
Имя пользователя:
E-Mail пользователя:
Тема сообщения:
Сообщение:
\n\n";
}

/* Закрываем соединение */
mysql_close();

Ну вот и все, приятного кодинга:1133:

_________________________________

Все модули сайта или веб приложения, где требуется внести и записать некоторые данные (например, имя, возраст, адрес и т.д.) используют простую функцию на языке 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 -код формы для внесения комментария следующий.

От автора: эх, из песни слов не выкинешь! Но их можно удалить, обновить или вставить другие. Главное, чтобы слова были внесены в базу данных. Сегодня мы расскажем, как происходит запись данных в 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 подходит идеально, поэтому мы советуем вам завести «тесную» дружбу с этим «великим» языком программирования!

В этом уроке мы рассмотрим, как вставлять данные в БД непосредственно из ваших РНР-скриптов.

Вставка данных с использованием SQL

Вы используете SQL для вставки данных в БД точно так же, как используете SQL для создания БД и таблиц. Синтаксис SQL-запроса таков:

INSERT INTO ИмяТаблицы(столбец1, столбец 2, ...) VALUES(значение1, значение 2, ...)

Как видите, вы можете обновлять несколько столбцов в одном SQL-операторе, указывая их в разделённом запятыми списке. Но разумеется, можно также специфицировать только один столбец и одно значение. Столбцы, не упомянутые в данном SQL-операторе, останутся пустыми.

Пример: Вставка новой персоны в таблицу

В этом примере мы используем БД из Урока 18 . Скажем, мы хотим вставить персону в БД. Это может быть Gus Goose с номером телефона 99887766 и датой рождения 1964-04-20 .

Оператор SQL может выглядеть так:

$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES("Gus","Goose","99887766 ","1964-04-20")";

Как видите, SQL-операторы могут быть весьма длинными, и можно легко потерять след. Поэтому лучше записывать SQL-оператор слегка иначе:

strSQL = "INSERT INTO people("; strSQL = strSQL . "FirstName, "; strSQL = strSQL . "LastName, " strSQL = strSQL . "Phone, "; strSQL = strSQL . "birth) "; strSQL = strSQL . "VALUES ("; strSQL = strSQL . ""Gus", "; strSQL = strSQL . ""Goose", "; strSQL = strSQL . ""99887766", "; strSQL = strSQL . ""1964-04-20")"; mysql_query($strSQL) or die(mysql_error());

Здесь SQL-оператор строится с разделением предложения на небольшие части с последующим объединением их в переменную $strSQL .

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

Попробуем выполнить следующий код для вставки Gus Goose в БД:

Вставка данных в БД // Соединение с сервером БД mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ()); // Выбор БД mysql_select_db("mydatabase") or die(mysql_error()); // Построение SQL-оператора $strSQL = "INSERT INTO people("; $strSQL = $strSQL . "FirstName, "; $strSQL = $strSQL . "LastName, "; $strSQL = $strSQL . "Phone, "; $strSQL = $strSQL . "BirthDate) "; $strSQL = $strSQL . "VALUES("; $strSQL = $strSQL . ""Gus", "; $strSQL = $strSQL . ""Goose", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . ""1964-04-20")"; // SQL-оператор выполняется mysql_query($strSQL) or die (mysql_error()); // Закрытие соединения mysql_close(); ?>

БД обновлена!

Сохранение пользовательского ввода в БД

Вы, вероятно, уже сообразили, что для этого можно создать форму, как в Уроке 11 , а значения из формы можно вставить в SQL-оператор. Предположим, у вас имеется простая форма:

Эта форма отправляется в файл insert.php , где вы, как показано в Уроке 11, можете получить пользовательский ввод, запросив содержимое формы. В данном конкретном случае SQL-оператор может быть таким:

strSQL = "INSERT INTO people(FirstName) values("" . $_POST["FirstName"] . "")"

Аналогично можно запросить данные кук, сессий строк запроса etc.

Наиболее распространённые ошибки начинающих

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

Неверный тип данных

Важно, чтобы данные и тип данных столбца соответствовали друг другу. Каждый столбец может содержать данные определённого типа. Следующий скриншот показывает типы данных таблицы "people" из нашего примера.

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

Ниже перечислены наиболее употребительные типы данных:

Значение Тип Данных Размер
CHR
Текст или комбинация текста и чисел. Может также использоваться для числе, не используемых при расчётах (напр., номера телефонов). До 255 символов - либо длина, определяемая в "Length"
TEXT
Большие блоки текста или комбинация текста и чисел. До 65,535 символов
INT
Числовые данные для математических вычислений. 4 байта
DATE
Даты в формате ГГГ-ММ-ДД 3 байта
TIME
Время в формате чч:мм:сс 3 байта
DATETIME
Дата и время в формате ГГГ-ММ-ДД чч:мм:сс 8 байт

SQL-операторы с кавычками или обратными слэшами

Если вы попытаетесь вставить текст, содержащий символы одинарной кавычки ("), двойной кавычки (") или обратного слэша (\), запись не будет вставлена в БД. Решением будет подстановка обратных слэшей перед символами, которые должны мнемонизироваться при вставке в запросы БД.

В этом руководстве вы познакомитесь с тем, как начать управлять базой данных из вашего PHP скрипта. Вы изучите добавление записи в таблицу MySQL, используя PHP код . Перед тем как начать, ознакомьтесь с нашими другими руководствами, которые раскрывают основные шаги работы с PHP и базами данных – подключение из PHP к базе данных MySQL (англ.).

Перед началом проверьте наличие следующего:

  • Доступ к вашей панели управления хостингом

Шаг 1 - Создание таблицы

Прежде всего, нам нужно создать таблицу для ваших данных. Это очень простая процедура, которую вы можете сделать в phpMyAdmin из вашей панели управления хостингом. Мы уже описывали процесс создания базы данных MySQL в предыдущем руководстве (англ.), поэтому мы пропустим этот момент здесь.

После входа на страницу phpMyAdmin вы увидите подобную картину:

Создадим таблицу с названием Students для нашей базы данных u266072517_name . Создать новую таблицу можно по кнопке Create Table . После этого вы увидите новую страницу, где вы можете ввести все необходимые данные для своей таблицы:

Это наиболее простой способ создания таблицы, для получения большей информации по поводу структуры таблицы/базы данных и какие настройки можно использовать для каждого поля, обратитесь к официальной документации phpMyAdmin (англ.).

Приведём здесь несколько простых пояснение полей, которые мы будем использовать:

  • Name – это имя вашего поля. Будет отображено в самом верху вашей таблицы.
  • Type – здесь можно установить тип поля. Например, мы выбираем varchar , потому что здесь нам нужно ввести строку с именем (в котором есть буквы, не цифры).
  • Length/Values – используется для задания максимальной длины вашей записи в этом поле.
  • Index – мы используем индекс “Primary” для нашего поля “ID”. Когда создаётся таблица, рекомендуется иметь одно поле ID. Она используется для индексации записей в таблице, когда настраиваются взаимосвязи между таблицами. Здесь также можно отметить “A_I” , что означает Auto Increment . Эта настройки будет автоматически увеличивать индекс (1,2,3,4…).

Нажмите Save и ваша таблица будет создана.

Шаг 2 - Создание PHP кода и добавление записи в таблицу MySQL

Вариант 1 – Метод MySQLi

Прежде всего, нужно установить соединение с базой данных, согласно нашему предыдущему руководству . После этого мы можем продолжить с SQL запросом на добавление записи в таблицу MySQL – 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 – это выражение, которое добавляет запись в указанную таблицу базы данных MySQL. В нашем примере мы добавляем данные в таблицу Students .

Двигаясь дальше, в скобках, мы определяем поля таблицы, значения в которые будем добавлять: (name, lastname, email) . Данные будут добавлены в определённом порядке. Если мы напишем (email, lastname, name) , значения будут добавлены в другом порядке.

Следующая часть значения VALUES . Здесь мы задаём наши значения в ранее указанные поля. Таким образом, каждое поле получит своё значение. Например, в нашем случае это будет что-то вроде: name = Thom, lastname = Vial, email = [email protected] .

Что важно отметить, что тут мы формируем запрос SQL , используя PHP код. SQL запросы должны быть заключены в кавычки. В нашем примере, всё между кавычками и идущее после $sql = это SQL запрос.

Следующая часть кода (20 – 22 строки) запускает наш запрос и производит проверку успешности выполнения запроса:

If (mysqli_query($conn, $sql)) { echo "New record created successfully"; }

Выводится сообщение об удаче, если запрос был запущен верно.

И заключительная часть (22 – 24 строки) показывают другое сообщение, на случай неудачного выполнения нашего запроса:

Else { echo "Error: " . $sql . "
" . mysqli_error($conn); }

Этот код отображает нам сообщение об ошибке, на случай, если что-то пошло не так.

Вариант 2 – Метод объектов данных PHP (P HP D ata O bject)

Как и в предыдущем примере, нам нужно прежде всего выполнить подключение к базе данных, которое производится при создании нового объекта PDO – предыдущее руководство рассказывает о том, как это происходит. Поскольку подключение к базе данных MySQL – это PDO объект, мы должны использовать различные PDO ‘методы’ (своего рода функции, которые являются частью определённого объекта) для подготовки и запуска запроса. Методы объектов вызываются таким образом:

$the_Object->the_Method();

PDO позволяет ‘подготовить’ SQL код перед его выполнением. Запрос SQL вычисляется и корректируется перед запуском. Так, простая атака путём SQL инъекции может быть выполнена заполняя код SQL в поле формы. Например:

// User writes this in the username field of a login form thom"; DROP DATABASE user_table; // The final query becomes this "SELECT * FROM user_table WHERE username = thom"; DROP DATABASE user_table;

Поскольку SQL код синтаксически правильный, точка с запятой делает из DROP DATABASE user_table новый запрос SQL, и ваша таблица пользователей удалена. Подготавливаемые выражения не разрешают символы и ; для завершения исходного запроса, и инструкция DROP DATABASE никогда не выполнится.

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

Для использования подготавливаемых выражений, нужно создать новую переменную, которая вызовет метод prepare() на объекте базы данных.

В правильном виде код выглядит:

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = ; // Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object try { $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; } catch (PDOException $error) { echo "Connection error: " . $error->getMessage(); } // Set the variables for the person we want to add to the database $first_Name = "Thom"; $last_Name = "Vial"; $email = "[email protected]"; // Here we create a variable that calls the prepare() method of the database object // The SQL query you want to run is entered as the parameter, and placeholders are written like this:placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Now we tell the script which variable each placeholder actually refers to using the bindParam() method // First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Execute the query using the data we just defined // The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; } // At this point you can change the data of the variables and execute again to add more data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "[email protected]"; $my_Insert_Statement->execute(); // Execute again now that the variables have changed if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; }

В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Есть так же метод bindValue() , отличающийся от предыдущего.

  • bindParam() – этот метод подсчитывает данные, когда метод execute() достигнут. Первый раз, когда скрипт доходит до метода execute() он видит, что $first_Name ссылается на “Thom”, связывает это значение и выполняет запрос. Когда скрипт добирается второй раз до метода execute() , он смотрит, что $first_Name теперь ссылается на “John”, связывает это значение и запускает запрос опять с новым значением. Важно понимать, что мы создаём запрос один раз и затем подставляем разные данные в разных местах скрипта.
  • bindValue() – этот метод вычисляет данные, как только до него доходит очередь. Так как значение $first_Name было задано как “Thom”, на момент, когда мы достигли метода bindValue() , оно будет использован при вызове метода execute() для $my_Insert_Statement .

Обратите внимание, что мы повторно используем переменную $first_Name и задаём ей новое значение во второй раз. Если вы проверите свою базу данных после запуска этого скрипта, там будут оба из заданных имени, вопреки этому значение переменной $first_Name будет равно “John” в конце этого скрипта. Помните, что PHP оценивает содержимое скрипта перед его запуском.

Если вы измените свой скрипт заменив bindParam на bindValue , вы добавите в базу MySQL “Thom Vial” дважды в базу данных и John Smith будет проигнорирован.

Шаг 3 - Проверка успешности выполнения и решение общих вопросов

Если запрос, который мы запустили в базе данных MySQL выполнился успешно, мы увидим такое сообщение:

Решение распространённых ошибок

MySQLi

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

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]") You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax 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: Uncaught exception "PDOException" with message "SQLSTATE: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"

Другие проблемы, с которым вы можете столкнуться:

  • Неверно указаны поля (несуществующие поля или ошибки в написании названий).
  • Несоответствие типа значения типу поля. Например, когда мы хотим присвоить значение числа 47 полю Name , мы получим ошибку, потому что предполагается, что значение будет строкой. Но, если вы укажете число в кавычках, например, “47” , ошибки не будет, потому что наше число будет записано как строка в это поле.
  • Попытка ввести данные в таблицу, которой не существует или ошибка в написании названия таблицы.

Все эти ошибки могут быть исправлены следуя руководствам по исправлению ошибок или проверяя журнал ошибок (англ.).

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

Заключение

В этом руководстве вы изучили, как использовать PHP код для добавления записи в таблицу MySQL с использованием MySQLi и PDO . Также рассмотрели случаи распространённых ошибок и их решения. Знание того, как использовать PHP код, чтобы добавить в базу данных MySQL пригодится независимо от того, вы учитесь программировать или уже создаёте свой сайт.

Loading...Loading...