Додавання даних у бд php. Запит SQL на додавання та видалення записів. Як вставити запис за допомогою PHP

У цьому пості хочу розповісти, як передати до Бази Даних, введені дані у форму. І так ми створюємо просту форму, де у нас буде два поля: ім'я користувача та його електронна пошта:

Ваше ім'я:
Ваш e-mail:


Ця форма може застосовуватися для реєстрації нового користувача, для розсилки новин, для збору статистики, та навіщо завгодно... Загалом у цю форму користувач забиває свої дані: ім'я та пошту, натискає на кнопку і далі дані переходять у 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")");


Ось що має вийде в результаті:
Форма введення:

Ваше ім'я:
Ваш e-mail:
Ваше місто:


Скрипт:

$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 "Відбулася помилка, будь ласка повторіть спробу."; )


Як бачите нічого складного! При необхідності можна додати ще поле, і ще, і ще...

Коментарі, перенесені з блогу

СЕРГІЙ
14.09.2016 о 01:25
Доброго дня!
Цікавить таке питання: як найпростіше організувати зберігання даних і налаштувань програми без використання бд? Не хочеться прив'язуватися до MySQL або Access.

ADMIN
14.09.2016 о 22:14
Вітаю!

Properties.Settings
App.Config
XML файл
серіалізація
Спробуйте вибрати щось із цього зі списку.

МИКОЛА
16.09.2016 о 02:28
Здрастуйте, як видалити виділений рядок у dataGridVIew з dataGridVIew та phpMyAdmin.

PhpMyAdmin? Це лише оболонка для роботи з базою даних, чи можете пояснити?

МИКОЛА
18.09.2016 о 02:24
Необхідно щоб виділений рядок видалялася з DataGridView і з бази даних.

ADMIN
19.09.2016 о 07:00
Як видалити рядок у базі даних Mysql - додав статтю.

МИКОЛА
20.09.2016 о 09:20
Велике дякую.

ДІМА
20.09.2016 о 10:24
Здрастуйте, а чи можна цей спосіб реалізувати не через DataGridView, а через ComboBox? Якщо так, то як? Дякую.

ADMIN
22.09.2016 о 03:21
Вітання. Приклад:

ГЕНАДІЙ
22.09.2016 о 18:25
чому мені в базу даних вноситиметься такий текст System.Windows.Forms.TextBox, Text: ге

До статті ось це (ге) до кінця це написано гена хоч в налаштуваннях таблиці вказаний текст.

ADMIN
24.09.2016 о 04:17
Швидше за все невірно написаний SQL запит, наприклад:

У textBox1 вводимо ім'я: Гена.

Sql запит: «Insert в ім'я таблиці values(textBox1, ..)»; Результат: System.Windows.Forms.TextBox

А потрібно передавати: "Insert into имя таблиці values(textBox1.Text, ..)";
Результат: Гена

ГЕНАДІЙ
24.09.2016 о 18:41
Саме так воно і є. Дякую

СЕРГІЙ
25.09.2016 об 11:51
Вітаю. А як реалізувати додавання до БД через textBox?

ADMIN
26.09.2016 о 20:53
Все те саме в принципі. Наприклад, візьмемо останній приклад, у ньому потрібно:

//створюємо параметри та додаємо їх у колекцію cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

тепер параметри: Name і LastName отримують значення, введені в textbox-и і передають їх у БД

ЛІНАРА
27.09.2016 о 17:45
Доброго дня, як виділений рядок в dataGridVIew і phpMyAdmin?

ADMIN
29.09.2016 о 02:06
Я не знаю, як можна виділений рядок у phpMyAdmin. А в dataGridView, наприклад, це можна зробити за допомогою події SelectionChanged.

PSH
30.09.2016 о 03:48
2Лінара:
Якщо так хочете редагувати рядки, візьміть інструмент а-ля HediSQL, налаштуйте та змінюйте рядки.

2admin
Доброго дня! Дякую за матеріали - все дуже круто викладено)
Питання: додаю дані таким запитом (він тестовий):

String sql = "INSERT INTO users (`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Passport`, `Birth`) VALUES ("Колян", "Москва", "1+1 ", 1100, "2011-11-11", "1111 1111", "9.11.1900");";

Дані вносяться все ок, але в БД (mysql) замість кирилиці виявляються «????».

Visual studio говорить, що System.String - послідовність Юнікод.

Також пробував:

ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";

Але не допомагає.
У чому може бути справа? Різні кодування VS і БД? Або що?
Могли б направити що почитати/змінити.
Дякую

ADMIN
01.10.2016 о 09:49
Вітання.

У БД (і таблиці) зіставлення utf_general_ci

Хіба таке зіставлення є? Можливо utf8_general_ci?

Зазвичай створюють БД Mysql, вибираючи порівняння utf8_general_ci, тому проблем з кирилицею не виникає, якщо звичайно з клієнта не приходять кракозябри на сервер.

COLLATION використовується для порівняння, а в цьому ж випадку важливе кодування (charset). Тому спочатку необхідно переконатися, що вона виставлена ​​на сервері вірно, наприклад в utf8, а не latin1.

При підключенні через.net конектор (за замовчуванням) використовується latin1, тому іноді потрібно явно вказати кодування utf8 у рядку підключення:

MySqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 об 11:34
Ви маєте рацію, описався, utf8_general_ci!
Так допомогло, Charset = utf8;
Дякую величезне!

СЕРГІЙ
02.10.2016 об 11:02
Дякую за робочий приклад, потрібний. Питання
Я створив текстове поле, в яке хотів би вводити айпі-адресу бази даних, але не знаю як підставити ці дані ось сюди.

String conStr = "server=@textBox2;user=test;" +
"database=test;password=test;";
Підкажіть будь ласка як вставляти дані з текстових полів у windows form у цю конструкцію….

ADMIN
03.10.2016 об 11:50
"[email protected];user=...
Взагалі краще замість такого рядка використовувати властивості, як у цій статті, або метод String.Format()

OLGA2203
15.05.2017 о 20:14

String Connect = “Server=127.0.0.1;Port=3306;Database=base;Data Source=localhost;user=root;”; MySqlConnection con = New MySqlConnection(Connect); con.Open(); //Встановлюємо з'єднання з базою даних. MySqlCommand cmd = New MySqlCommand(); cmd.CommandText = @”INSERT INTO (ID,Category,Name,TradeMark,Price,Photo,Size,Color,Material,Count) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Size, @Color, @Material, @Count)”; cmd.Parameters.AddWithValue(“@pr”, counter); cmd.Parameters.AddWithValue(“@Category”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue(“@Name”, textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue(“@Price”, Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue(“@Size”, textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show("Додавання пройшло успішно", "Додавання пройшло успішно", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Видається помилка "Column 'ID' cannot be null", прибираю додавання в стовпець ID - те саме про наступний стовпець пише і т.д.
Якщо вношу константні значення в дужках у VALUES, рядок до бази додається.
Підкажіть, будь ласка, у чому проблема? Мені потрібно записувати в базу даних саме дані, що вводяться через форму, та значення

У цій статті ми розберемо, мабуть, одні з найважливіших 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.

Наступна комірка ім'я імені користувача. Число символів – до двісті – триста символів на ваш вибір, параметр 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 і як це зробити правильно, щоб пісня звучала!

Додавання записів за допомогою 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 підходить ідеально, тому ми радимо вам завести «тісну» дружбу із цією «великою» мовою програмування!