Як використовувати PHP для вставлення рядків у базу даних MySQL Особливо урок буде корисний новачкам Додавання запису в бд mysql через форму

Головна / Додатковий функціонал

Урок буде заснований на формі зворотного зв'язкунеобхідно практично на будь-якому сайті.

Крок перший: Створення бази даних у 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) або 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) або die (mysql_error());

/* Якщо було натиснуто посилання видалення, видаляємо запис */
$del = $query = "delete від $table where (id="$del")";
/* Виконуємо запит. Якщо станеться помилка – вивести її. */
mysql_query($query) або die(mysql_error());



/* Виконуємо запит. Якщо станеться помилка – вивести її. */
$res = mysql_query($query) або 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) або 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) або die (mysql_error());
}

/* Заносимо в змінну $res всю базу даних */
$query = "SELECT * FROM $table";
/* Виконуємо запит. Якщо станеться помилка – вивести її. */
$res = mysql_query($query) або 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:

_________________________________

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

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


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

У цій статті ми розглянемо, як використовувати PHP для вставлення рядків у базу MySQL.

Крок 1 - Створення таблиці

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

Після входу ви phpMyAdmin ви побачите такий інтерфейс:
Створимо в базі даних таблицю з ім'ям 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); // Виконуємо запит, використовуючи дані, які щойно визначили // Метод execute() повертає TRUE, якщо він виконаний успішно, і FALSE, якщо ні, надаючи можливість вивести власне повідомлення if ($my_Insert_Statement->execute()) ( echo "Новий рекордстворенийуспішно"; ) 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]") Ви маєте небезпеку в вашій SQL syntaxі; виконайте автоматичнийвідповідь до вашої MySQL серверної версії для правоїсинтакти для використання поблизу "(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". Якщо встановлено інше значення, і запит не вдався б, ми не отримали б жодних повідомлень про помилки.

Це налаштування слід використовувати лише при розробці скрипту. Під час її активації можуть відображатися імена бази даних та таблиць, які краще приховати з метою безпеки. У цьому випадку, коли замість звичайних дужок використовувалися фігурні, повідомлення про помилку виглядає так:

Недостатній error: Неправильнийвідповідь "PDOException" з повідомленням "SQLSTATE: Syntax error або accessviolation: 1064 Ви маєте error in your SQL syntax; виконати автоматичнийвідповідь до вашої MySQL версії сервера для правогосинтакту для використання в найближчому майбутньому "(name, lastname, email) VALUES ("Thom", "Vial", " [email protected]")" at line 1"

Інші можливі проблеми:

  • Невірно вказані стовпці (неіснуючі стовпці чи орфографічна помилка у тому іменах).
  • Один тип значення присвоюється стовпцю іншого типу. Наприклад, якщо спробувати вставити число 47 в стовпець Name, то матимемо помилку. У цьому стовпці потрібно використовувати рядкове значення. Але якби ми вказали число в лапках (наприклад, «47»), то спрацювало б, бо це рядок.
  • Спроба ввести дані до таблиці, яка не існує. Допущена орфографічна помилка у імені таблиці.

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

Висновок

У цій статті ми розповіли, як використовувати PHP для вставлення даних у базу даних MySQL, використовуючи MySQLi та PDO. А також про те, як усувати найпоширеніші помилки. Ці знання будуть корисні при вивченні програмування та розробки власного сайту.

Дана публікація є перекладом статті « How to Use PHP to Insert Data Into MySQL Database» , підготовленою дружною командою проекту

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

СЕРГІЙ
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 = " [email protected];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, рядок до бази додається.
Підкажіть, будь ласка, у чому проблема? Мені потрібно записувати в базу даних саме дані, що вводяться через форму, та значення

Останнє оновлення: 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); ) ?>

Додати нову модель

Введіть модель:

Виробник:

Тут код взаємодії з базою даних поєднаний з функціональністю форм: за допомогою форми ми вводимо дані для додавання до бд.

Безпека та MySQL

Ми використовували функцію mysqli_real_escape_string() . Вона служить для екранізації символів у рядку, який потім використовується у запиті SQL. Як параметри вона приймає об'єкт підключення та рядок, який треба екранувати.

Таким чином, ми застосовуємо екранізацію символів фактично двічі: спочатку для sql-виразу за допомогою функції mysqli_real_escape_string(), а потім для html за допомогою функції htmlentities(). Це дозволить нам захиститися відразу від двох видів атак: XSS-атак та SQL-ін'єкцій.

© 2023 androidas.ru - Все про Android