Добавление записи в таблицу sql php. Запрос SQL на добавление и удаление записей
В этом посте хочу рассказать, как передать в Базу Данных, введенные данные в форму
. И так мы создаем простую форму, где у нас будет два поля: имя пользователя и его электронная почта:
Эта форма может применятся для регистрации нового пользователя, для рассылки новостей, для сбора статистики, да для чего угодно... В общем в эту форму пользователь забивает свои данные: имя и почту, нажимает на кнопку и дальше данные переходят в 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 "Произошла ошибка, пожалуйста повторите попытку."; }
Как видите ни чего сложного! При необходимости можно добавить ещё поле, и ещё, и ещё...
В этой статье мы разберём, пожалуй, одни из самых важных SQL-запросов . Это запросы на добавление и удаление записей из таблицы базы данных . Поскольку, ОЧЕНЬ часто приходится добавлять новые записи в таблицу , причём делать это в автоматическом режиме, то данный материал обязателен к изучению.
Для начала SQL-запрос на добавление новой записи в таблицу :
INSERT INTO users (login, pass) values("TestUser", "123456")
При добавлении записи вначале идёт команда "INSERT INTO ", затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова "values " начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись.
Иногда требуется обновить запись в таблице , для этого существует следующий SQL-запрос :
UPDATE users SET login = "TestUser2", pass="1234560" WHERE login="TestUser"
Данный запрос является более сложным, так как он имеет конструкцию "WHERE ", но о ней чуть ниже. Вначале идёт команда "UPDATE ", затем имя таблицы, а после "SET " мы описываем значения всех полей, которые мы хотим изменить. Было бы всё просто, но встаёт вопрос: "А какую именно запись следует обновлять? ". Для этого существует "WHERE ". В данном случае мы обновляем запись, поле "login " у которой имеет значение "TestUser ". Обратите внимание, что если таких записей будет несколько, то обновятся абсолютно все ! Это очень важно понимать, иначе Вы рискуете потерять свою таблицу.
Давайте немного ещё поговорим о "WHERE ". Помимо простых проверок на равенство существуют так же и неравенства, а также логические операции: AND и OR .
UPDATE users SET login = "TestUser2", pass="1234560" WHERE id < 15 AND login="TestUser"
Данный SQL-запрос обновит те записи, id которых меньше 15 И поле "login " имеет значение "TestUser ". Надеюсь, Вы разобрались с конструкцией "WHERE ", потому что это очень важно. Именно "WHERE " используется при выборке записей из таблиц , а это самая частоиспользуемая задача при работе с базами данных.
И, напоследок, простой SQL-запрос на удаление записей из таблицы :
DELETE FROM users WHERE login="TestUser2"
После команды "DELETE FROM " идёт имя таблицы, в которой требуется удалить записи. Дальше описываем конструкцию "WHERE". Если запись будет соответствовать описанным условиям, то она будет удалена. Опять же обратите внимание, в зависимости от количества записей, удовлетворяющих условию после "WHERE ", может удалиться любое их количество.
Все модули сайта или веб приложения, где требуется внести и записать некоторые данные (например, имя, возраст, адрес и т.д.) используют простую функцию на языке 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 -код формы для внесения комментария следующий.
Последнее обновление: 1.11.2015
Для добавления данных используется выражение "INSERT":
$query ="INSERT INTO tovars VALUES(NULL, "Samsung Galaxy III","Samsumg")";
Выражение "INSERT" вставляет в таблицу одну строку. После ключевого слова INTO указывается название таблицы, а после VALUES в скобках указываются набор значений для всех столбцов. Так как у нас в таблице три столбца, то мы указываем три значения.
Так как в прошлой теме при создании таблицы мы указывали следующую очередность столбцов: id, name, company, то в данном случае для столбца id передается значение NULL, для name - "Samsung Galaxy III", а для company - "Samsumg".
Поскольку столбец id определен как AUTO_INCREMENT, то нам необязательно указывать для него определенное числовое значение, и можно передать значение NULL, а MySQL присвоит столбцу следующее доступное значение.
Теперь рассмотрим добавление данных на примере. Создадим файл create.php со следующим содержимым:
Данные добавлены"; } // закрываем подключение mysqli_close($link); } ?>
Добавить новую модель
Здесь код взаимодействия с базой данных объединен с функциональностью форм: c помощью формы мы вводим данные для добавления в бд.
Безопасность и MySQL
Здесь мы использовали функцию mysqli_real_escape_string() . Она служит для экранизации символов в строке, которая потом используется в запросе SQL. В качестве параметров она принимает объект подключения и строку, которую надо экранировать.
Таким образом, мы применяем экранизацию символов фактически два раза: сначала для sql-выражения с помощью функции mysqli_real_escape_string() , а затем для html с помощью функции htmlentities() . Это позволит нам защититься сразу от двух видов атак: XSS-атак и SQL-инъекций.
В этом уроке мы научимся вносить в базу данных MySql, данные введенные пользователем в форму. Вы узнаете, как соединяться с базой данных MySql из кода веб страницы, а также обрабатывать и вносить данные в базу.
В прошлом уроке я рассказала Вам о том, как установить Денвер на Ваш компьютер, как создать свою базу данных, пользователя для нее, как создать таблицу в базе данных и мы заполнили ее одной записью.
В этом уроке мы создадим html документ для ввода пользовательской информации, а также php файл-обработчик этой информации, который будет обрабатывать данные, соединяться с базой данных MySql и вставлять туда новые записи.
Переходя от слов к делу давайте начнем.
Добавляем пользовательские данные в базу MySql с веб страницы
Первый этап: создаем html форму для ввода данных
С самого начала нам нужно подготовиться к работе с php, MySql и к тестированию написанного кода на локальном компьютере. Для этого:
1. Запустите Denwer на своем компьютере.
2. Откройте виртуальный диск, созданный Денвером (например у меня это диск “Z”). Откройте его, дальше: home – localhost – www – там создайте новую папку и дайте ей название (я дам название “db1”).
3. Если Вы работаете в Adobe Dreamweaver, то зайдите в менеджер сайтов, там нажмите на кнопку «New», в качестве пути выберите путь до только что созданной папки, в поле выше можете дать имя сайту, после этого нажмите Save – Done. После всего этого в правой панели Adobe Dreamweaver появится Ваша папка.
1. Сейчас мы создадим обычный html файл (назовем его info_form.html и сохраним в только что созданной папке db1) и пропишем там код формы для ввода информации. В нашей таблице users базы данных new_db есть 4 поля, которые мог бы заполнить пользователь (поле id будет заполняться автоматически). Исходя из этого можно создать код следующего вида:
Здесь в параметре «action» нашей формы прописан файл form.php . Он будет являться файлом обработчиком, который мы создадим далее.
Давайте еще создадим файл style.css для придания стилей нашей форме. Он уже подключен в коде, так что осталось только создать его, поместить в ту же папку, что и html файл и прописать в нем следующий код:
Body{width:400px; margin:0 auto; background:#F8F4B6;} label{display: block; float: left; width: 150px; padding: 0 10px; margin: 18px 0 0; text-align: right;} #submit{float:right; margin:5px 50px 10px 0;}
Теперь форма выглядит следующим образом:
Однако, если Вы введете данные и попытаетесь отправить форму, то увидите ошибку, так как никакого файла form.php, лежащего в каталоге scripts не существует.
Создать файл-обработчик – это наша следующая задача.
2. Давайте внутри папки db1 создадим папку с названием «scripts» . В ней мы будем сохранять все наши скрипты взаимодействия с базой данных MySql.
После того как папка будет создана, создайте новый php файл и сохраните его в папке scripts под именем form.php .
Но перед тем как заняться непосредственно файлом-обработчиком информации нужно сначала подключиться к нашей базе данных. Я предлагаю создать для этого отдельный файл и вот почему:
Скорее всего в Вашем проекте Вам придется соединяться с базой данных MySql не только из одного файла. Как правило с базой данных взаимодействуют различные файлы проекта.
Очень непрактично в каждом таком файле прописывать один и тот же код подключения к базе. А если таких файлов, например, будет 50 и в один прекрасный день вы смените пароль для пользователя и Вам придётся искать все эти 50 файлов и в каждом делать исправление.
Гораздо удобнее использовать для подключения отдельный файл, который будет подключен к каждому из файлов, где должно быть соединение с базой данных MySql. В таком случае вносить исправления нужно будет только в один файл.
Итак, давайте создадим новый php файл, назовем его connect.php и поместим в папку для скриптов. В нем пропишем код соединения с нашей базой данных MySql, а также код, который будет сообщать об ошибках в случае их возникновения. Обратите внимание, что в качестве параметров Вам необходимо будет прописать Ваше имя пользователя, Ваш пароль и Ваше имя базы данных. В качестве хоста должен быть localhost.
Ошибка подключения к базе данных! " . mysql_error() . "
"); mysql_select_db("new_db")//параметр в скобках ("имя базы, с которой соединяемся") or die("Ошибка выбора базы данных! ". mysql_error() . "
"); ?>Теперь перейдем в файл form.php и подключим в него файл connect.php с помощью следующего кода:
Если сейчас Вы попробуете отправить форму, то увидите после отправки пустую веб страницу. Это нормально, так как мы просто соединились с базой и пока больше ничего не выводим.
Если Вы увидели сообщение об ошибке, то проверьте правильность всех параметров (имя пользователя, пароль, имя хоста: localhos, имя базы данных), а также будьте уверены, что Ваш Денвер включен.
3. Мы удачно соединились с базой данных MySql, а теперь нам нужно принять введенные в форму данные в наш файл обработчик . В этом нам помогут атрибуты “name”, которые присутствуют в html документе.
Для получения данных мы воспользуемся специальной переменной php, снабжающей нас всей информацией из веб-формы. Эта переменная называется “$_REQUEST”.
Пропишите в файле form.php после подключения файла connect.php следующий код:
$first_name = $_REQUEST["first_name"]; $last_name = $_REQUEST["last_name"]; $email = $_REQUEST["email"]; $facebook = $_REQUEST["facebook"];
4. Данные в файл мы получили и занесли их в переменные. Теперь нужно отправить эти данные в нашу таблицу базы данных MySql . Для этого ниже нужно прописать следующий код:
$insert_sql = "INSERT INTO users (first_name, last_name, email, facebook)" . "VALUES("{$first_name}", "{$last_name}", "{$email}", "{$facebook}");"; mysql_query($insert_sql);
Здесь сначала мы формируем запрос, говоря, что нам нужно вставить соответствующие переменные в соответствующие поля таблицы “users”. Заносим этот запрос в переменную “$insert_sql”. А потом с помощью специальной функции mysql_query исполняем данный запрос.
Если сейчас Вы заполните и отправите форму, а потом посмотрите в таблицу “users” Вашей базы данных, то увидите новую запись, которая там появилась после отправки.
5. Мы вставили новую запись из веб страницы в таблицу базы данных MySql. Теперь хочется немного коснуться того формата, в котором вставляются наши данные.
Во-первых, нужно позаботиться о той ситуации, когда человек, заполняя форму может поставить ненужные пробелы в начале ввода информации. Их нужно обрезать.
Во-вторых, у нас существует поле для Facebook. Если мы в последующем захотим выводить эту информацию как ссылку, то необходимо позаботиться, чтобы данные в этом поле хранились в правильном формате (то есть «http://www.facebook.com/идентификатор на facebook»). Но пользователь не всегда будет вводить эти данные так как нам нужно. Он может ввести: “www.facebook.com/идентификатор на facebook”, “facebook.com/идентификатор на facebook” или просто “/идентификатор на facebook”.
Этих ситуаций нужно избегать. Для этого давайте подкорректируем наш код. Возможные лишние пробелы мы обрежем при помощи функции trim , а проверять правильность введенного url для facebook будет функция preg_match . Таким образом весь код файла form.php будет выглядеть следующим образом:
О функции preg_match
:
Это функция для поиска с регулярными выражениями.
Первый параметр в скобках – это регулярное выражение, второй – строка, где нужно искать.
Функция возвращает только первое совпадение: 0 – если совпадений нет, 1 – если совпадение есть.
Попробуйте теперь намеренно заполнить форму, сделав ненужные пробелы в начале заполнения какого-нибудь из полей и введя адрес для facebook без http:// или вообще введя только идентификатор facebook. Отправьте запрос, а потом перейдите в базу данных и Вы увидите, что несмотря на не совсем корректное заполнение, данные имеют именно тот вид, который нам нужен.
На этом буду заканчивать данный урок. Все файлы этого урока Вы можете скачать в исходниках (только не забудьте исправлять параметры на свои в файле connect.php).
А в следующем уроке мы научимся извлекать информацию из базы данных MySql, выбирать нужные записи и выводить их на экран. Чтобы не пропустить следующий урок подписывайтесь на обновления блога с помощью формы подписки, которую Вы видите ниже.
Оставляйте свои комментарии и делитесь с друзьями с помощью кнопок социальных сетей.
Успехов и до встречи в следующем уроке!