Меню
безкоштовно
Головна  /  прошивка / Додавання запису в таблицю sql php. Додавання даних в PHP

Додавання запису в таблицю sql php. Додавання даних в PHP

Всі модулі сайту або веб додатки, де потрібно внести і записати деякі дані (наприклад, ім'я, вік, адреса і т.д.) використовують просту функцію на мові mysql INSERT INTO `name_base` (name, value1, value2) VALUES ( 'Vasya ',' 1 ',' 2 ');

Всі змінні вносяться в базу даних відповідно до значень, які ми поставили в перших дужках. Важливо враховувати кодування скрипта обробника, бази даних і файлу конфігурації. Бажано використовувати найпоширенішу кодування UTF-8.

Слід враховувати, що записувати в базу можна двома способами.

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

наприклад:
У таблиці бази даних чотири осередки. Значить після елемента VALUE (..) в дужках повинні бути перераховані всі чотири змінні. І ще один момент: якщо змінна не існує, припустимо це необов'язковий параметр. Те пишемо просто пусте значення в лапках '',

"INSERT INTO` name_base` VALUES (NULL, `". $ Name. "`, ``, `2`)"; // третє пусте значення пишеться в лапках

Але у даного запиту є невеликі недоліки. Якщо додати одну клітинку або два осередки в таблицю бази даних, то даний запит поверне помилку. Тому, що в цьому методі перерахування всіх осередків в запиті обов'язково.

другий спосіб якщо після запиту INSERT INTO `name_base` (...) перерахувати всі осередки після імені бази даних. Приклад вже розглянуто трохи вище. Якщо забули, напишемо заново:

"INSERT INTO` name_base` ( `name`,` value`, `value2`) VALUES (NULL,` ". $ Name." `,` `,` 2`) ";

Тут ми перерахували всі осередки (name, value1, value2). І якщо додати додатково ще одну два осередки в таблицю бази даних, то синтаксис запиту міняти не доведеться. Але якщо тільки нам не потрібно додавати відразу в одному запиті ті самі додаткові змінні, які нам потрібні для тих самих нових створених осередків.

Така помилка вилітає дуже часто, після невеликої зміни на сайті. Припустимо, адміністратор додав додаткову осередок в базу, припустимо status. А змінити модуль обробник скрипта не встиг, або просто елементарно забув. Але деякі сайти мають дуже складну структуру, і на пошук помилки може піти чимало часу та сил. Тому бажано використовувати другий метод запису в базу даних. Хоча такого роду помилки частіше допускають початківці веб програмісти.

Php запис в базу даних mysql. практичні приклади

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

Для початку створимо таблицю msg в базі даних з чотирма осередками. У першій клітинці пишемо id коментаря. Число символів в осередку до десяти символів з параметром auto-increment. це автоматичний параметр буде змінюватися при кожному додаванні коментаря на +1.

Наступна осередок name ім'я користувача. Число символів - до двісті - триста символів на ваш вибір, параметр char. Потім осередок coment - в цей осередок будемо заносити сам текст коментаря. Якщо хочете записувати великі тексти коментарів, то можна задати параметр text - тоді можна заносить просто величезні тексти, більш п'ятсот тисяч символів або задайте параметр tinytext, тоді буде влазити трохи менше символів, але працювати буде трохи швидше.

Але в нашому випадку, будемо мати на увазі, що відвідувачі не будуть писати величезні тексти. І тому обмежимося і будемо фіксувати дві тисячі символів з параметром varchar, для запису строкових значень.

В останній осередок писатимемо дату внесення запису тексту коментаря. Писати будемо в числовому форматі в секундах, за допомогою функції поточної дати і часу time (); Для простоти, функцію задамо в змінну $ time \u003d 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 \u003d MyISAM DEFAULT CHARSET \u003d utf8 AUTO_INCREMENT \u003d 1;

Все, таблицю для коментарів створили. Тепер пишемо форму для того щоб написати коментар та сам скрипт обробник. HTML-код форми для внесення коментаря наступний.

У цій статті ми розберемо, мабуть, одні з найважливіших SQL-запитів. це запити на додавання і видалення записів з таблиці бази даних. Оскільки, ДУЖЕ часто доводиться додавати нові записи в таблицю, Причому робити це в автоматичному режимі, то даний матеріал обов'язковий до вивчення.

Для початку SQL-запит на додавання новому записі в таблицю:

INSERT INTO users (login, pass) values \u200b\u200b( "TestUser", "123456")

При додаванні запису спочатку йде команда " INSERT INTO", Потім назва таблиці, в яку ми вставляємо запис. Далі йде в круглих дужках назви полів, які ми хочемо заповнити. А потім в круглих дужках після слова" values"Починаємо перераховувати значення тих полів, які ми вибрали. Після виконання цього запиту в нашій таблиці з'явиться новий запис.

іноді потрібно оновити запис в таблиці, Для цього існує наступний SQL-запит:

UPDATE users SET login \u003d "TestUser2", pass \u003d "1234560" WHERE login \u003d "TestUser"

Даний запит є більш складним, так як він має конструкцію " WHERE", Але про неї трохи нижче. Спочатку йде команда" UPDATE", Потім ім'я таблиці, а після" SET"Ми описуємо значення всіх полів, які ми хочемо змінити. Було б все просто, але постає питання:" А яку саме запис слід оновлювати?". Для цього існує" WHERE". У даному випадку ми оновлюємо запис, поле" login"У якій має значення" TestUser". Зверніть увагу, що якщо таких записів буде кілька, то оновляться абсолютно все! Це дуже важливо розуміти, інакше Ви ризикуєте втратити свою таблицю.

Давайте трохи ще поговоримо про " WHERE". Крім простих перевірок на рівність існують так же і нерівності, а також логічні операції: AND і OR.

UPDATE users SET login \u003d "TestUser2", pass \u003d "1234560" WHERE id< 15 AND login="TestUser"

даний SQL-запит оновить ті записи, id яких менше 15 І поле " login" має значення " TestUser". Сподіваюся, Ви розібралися з конструкцією" WHERE", Тому що це дуже важливо. Саме" WHERE"Використовується при вибірці записів з таблиць, А це сама частоіспользуемих завдання при роботі з базами даних.

І, наостанок, простий SQL-запит на видалення записів з таблиці:

DELETE FROM users WHERE login \u003d "TestUser2"

Після команди " DELETE FROM"Йде ім'я таблиці, в якій потрібно видалити записи. Далі описуємо конструкцію" WHERE ". Якщо запис буде відповідати описаним умовам, то вона буде видалена. Знову ж зверніть увагу, в залежності від кількості записів, що задовольняють умові після" WHERE", Може піти будь-яке їхнє кількість.

У цьому керівництві ви познайомитеся з тим, як почати управляти базою даних з вашого 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);?\u003e

Таким чином перша частина коду (рядки 3 – 18 ) Відносяться до частині встановлення з'єднання до бази даних. Ми не будемо заново проходити по цій частині, якщо ви хочете знати, що означає кожен рядок, зверніться до нашого попереднього керівництва як підключитися до бази даних (англ.).

Почнемо з рядка 19 :

$ Sql \u200b\u200b\u003d "INSERT INTO Students (name, lastname, email) VALUES (" Thom "," Vial "," [Email protected]")";

Це найбільш важлива рядок коду, вона робить все, про що ми описуємо в цьому керівництві - додавання запису в таблицю MySQL в базу даних. INSERT INTO - це вираз, який додає запис у вказану таблицю бази даних MySQL. У нашому прикладі ми додаємо дані в таблицю Students.

Рухаючись далі, в дужках, ми визначаємо поля таблиці, значення в які будемо додавати: (Name, lastname, email). Дані будуть додані в певному порядку. Якщо ми напишемо (Email, lastname, name), Значення будуть додані в іншому порядку.

Наступна частина значення VALUES. Тут ми задаємо наші значення в раніше зазначені поля. Таким чином, кожне поле отримає своє значення. Наприклад, в нашому випадку це буде щось на зразок: name \u003d Thom, lastname \u003d Vial, email \u003d [Email protected] .

Що важливо відзначити, що тут ми формуємо запит SQL, Використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql \u003d це 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-\u003e 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 \u003d thom "; DROP DATABASE user_table;

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

завжди використовуйте підготовлювані запити, коли відправляєте або отримуєте дані з бази даних з PDO.

Для використання підготовлених виразів, потрібно створити нову змінну, яка викличе метод prepare () на об'єкті бази даних.

У правильному вигляді код виглядає:

$ Servername \u003d "mysql.hostinger.com"; $ Database \u003d "u266072517_name"; $ Username \u003d "u266072517_user"; $ Password \u003d "buystuffpwd"; $ Sql \u200b\u200b\u003d "mysql: host \u003d $ servername; dbname \u003d $ database;"; $ Dsn_Options \u003d; // Create a new connection to the MySQL database using PDO, $ my_Db_Connection is an object try ($ my_Db_Connection \u003d new PDO ($ sql, $ username, $ password, $ dsn_Options); echo "Connected successfully";) catch (PDOException $ error) (echo "Connection error:". $ error-\u003e getMessage ();) // Set the variables for the person we want to add to the database $ first_Name \u003d "Thom"; $ Last_Name \u003d "Vial"; $ Email \u003d " [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 \u003d $ my_Db_Connection-\u003e 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-\u003e bindParam (: first_name, $ first_Name); $ my_Insert_Statement-\u003e bindParam (: last_name, $ last_Name); $ my_Insert_Statement-\u003e 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-\u003e execute ()) (echo "New record created successfully";) el se (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 \u003d "John"; $ Last_Name \u003d "Smith"; $ Email \u003d " [Email protected]"; $ My_Insert_Statement-\u003e execute (); // Execute again now that the variables have changed if ($ my_Insert_Statement-\u003e 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 \u200b\u200b\u003d "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 стане в нагоді незалежно від того, ви вчитеся програмувати або вже створюєте свій сайт.

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

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


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

$ Name \u003d $ _POST [ "name"]; $ Email \u003d $ _POST [ "email"]; $ Result \u003d mysqli_query ( "INSERT INTO user (name, email) VALUES (" $ name "," $ email ")"); if ($ result) (echo "Дані успішно збережені!";) else (echo "Помилка, будь ласка спробуйте ще раз.";)


Що ж в цьому скрипті відбувається? Зараз розберемося!
Введені в форму дані, методом POST переходять в php скрипт (який написаний вище), і за допомогою глобального масиву $ _POST дані формуються в змінні $ name і $ email:

$ Name \u003d $ _POST [ "name"]; $ Email \u003d $ _POST [ "email"];


Після того, як змінні готові для занесення в базу, складаємо запит. Але перш Ваші скрипти повинні бути вже підключені до БД, як підключитися до БД, я писав в цій темі:. Сам запит виглядає так:

$ Result \u003d mysqli_query ( "INSERT INTO user (name, email) VALUES (" $ name "," $ email ")");


У цьому коді ми позначили, що в осередку name і email, які знаходяться в таблиці user, будуть додані наступні змінні: $ name і $ email.
Далі, якщо все пройшло успішно, ми отримаємо повідомлення з умови:

Дані успішно збережені!


Якщо ж виникли якісь проблеми і дані не були занесені, ми отримаємо повідомлення про помилку:

Сталася помилка, будь ласка спробуйте ще раз.


От і все!

*** *** *** *** ***

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

Ваш E-mail:


додаємо:

Ваше місто:


В php скрипт, після:

$ Email \u003d $ _POST [ "email"];


додаємо:

$ City \u003d $ _POST [ "city"];


Ну і звичайно в запиті додаємо теж, ось так:

$ Result \u003d mysqli_query ( "INSERT INTO user (name, email, city) VALUES (" $ name "," $ email "," $ city ")");


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

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


скрипт:

$ Name \u003d $ _POST [ "name"]; $ Email \u003d $ _POST [ "email"]; $ City \u003d $ _POST [ "city"]; $ Result \u003d mysqli_query ( "INSERT INTO user (name, email, city) VALUES (" $ name "," $ email "," $ city ")"); if ($ result \u003d\u003d 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 в 2:28
Привіт, як видалити виділений рядок в dataGridVIew з dataGridVIew і phpMyAdmin.

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

МИКОЛА
18.09.2016 в 2: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 в 3:21
Привіт. приклад:

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

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

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

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

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

А потрібно передавати: «Insert into ім'я таблиці values \u200b\u200b(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 в 2:06
Я не знаю, як можна виділену рядок в phpMyAdmin. А в dataGridView, наприклад це можна зробити за допомогою події SelectionChanged.

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

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

String sql \u003d "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 \u003d" koi8r_general_ci "; ALTER DATABASE `test` COLLATE" utf8_unicode_ci "; ALTER TABLE `users` COLLATE \u003d" utf8_unicode_ci ";

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

ADMIN
01.10.2016 в 9:49
Привіт.

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

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

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

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

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

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

PSH
01.10.2016 о 11:34
Ви маєте рацію, описав, utf8_general_ci!
Так допомогло,; Charset \u003d utf8;
Спасибі огрмное!

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

String conStr \u003d " [Email protected]; User \u003d test; "+
"Database \u003d test; password \u003d test;";
Підкажіть будь ласка як вставляти дані з текстових полів в windows form в цю конструкцію ....

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

OLGA2203
15.05.2017 о 20:14

String Connect \u003d "Server \u003d 127.0.0.1; Port \u003d 3306; Database \u003d base; Data Source \u003d localhost; user \u003d root;"; MySqlConnection con \u003d new MySqlConnection (Connect); con.Open (); // Встановлюємо з'єднання з базою даних. MySqlCommand cmd \u003d new MySqlCommand (); cmd.CommandText \u003d @ "INSERT INTO tovar (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 \u003d con; cmd.ExecuteNonQuery (); MessageBox.Show ( "Додавання пройшло успішно", "Додавання пройшло успішно", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

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