Як зробити запис в базу даних MySQL, використовуючи PHP код

  1. Як зробити запис в базу даних MySQL, використовуючи PHP код вступ
  2. що знадобиться
  3. Крок 1 - Створення таблиці
  4. Крок 2 - Створення PHP коду і додавання записи в таблицю MySQL
  5. Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)
  6. Крок 3 - Перевірка успішності виконання і вирішення спільних питань
  7. Рішення поширених помилок
  8. PDO
  9. висновок
  10. Як зробити запис в базу даних MySQL, використовуючи PHP код
  11. що знадобиться
  12. Крок 1 - Створення таблиці
  13. Крок 2 - Створення PHP коду і додавання записи в таблицю MySQL
  14. Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)
  15. Крок 3 - Перевірка успішності виконання і вирішення спільних питань
  16. Рішення поширених помилок
  17. PDO
  18. висновок
  19. Як зробити запис в базу даних MySQL, використовуючи PHP код
  20. що знадобиться
  21. Крок 1 - Створення таблиці
  22. Крок 2 - Створення PHP коду і додавання записи в таблицю MySQL
  23. Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)
  24. Крок 3 - Перевірка успішності виконання і вирішення спільних питань
  25. Рішення поширених помилок
  26. PDO
  27. висновок
  28. Як зробити запис в базу даних MySQL, використовуючи PHP код
  29. що знадобиться
  30. Крок 1 - Створення таблиці
  31. Крок 2 - Створення PHP коду і додавання записи в таблицю MySQL
  32. Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)
  33. Крок 3 - Перевірка успішності виконання і вирішення спільних питань
  34. Рішення поширених помилок
  35. PDO
  36. висновок
  37. Як зробити запис в базу даних MySQL, використовуючи PHP код
  38. що знадобиться
  39. Крок 1 - Створення таблиці
  40. Крок 2 - Створення PHP коду і додавання записи в таблицю MySQL
  41. Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)
  42. Крок 3 - Перевірка успішності виконання і вирішення спільних питань
  43. Рішення поширених помилок
  44. PDO
  45. висновок

Як зробити запис в базу даних MySQL, використовуючи PHP код

вступ

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

що знадобиться

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі управління хостингом

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

Перш за все, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdmin з вашої панелі управління хостингом. Ми вже описували процес створення бази даних MySQL в попередньому керівництві (Англ.), Тому ми пропустимо цей момент тут. Перш за все, нам потрібно створити таблицю для ваших даних

Після входу на сторінку phpMyAdmin ви побачите подібну картину: Після входу на сторінку phpMyAdmin ви побачите подібну картину:

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

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

<? Php $ servername = "mysql.hostinger.co.uk"; $ Database = "u266072517_name"; $ Username = "u266072517_user"; $ Password = "buystuffpwd"; // Create connection $ conn = mysqli_connect ($ servername, $ username, $ password, $ database); // Check connection if (! $ Conn) {die ( "Connection failed:". Mysqli_connect_error ()); } Echo "Connected successfully"; $ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')"; if (mysqli_query ($ conn, $ sql)) {echo "New record created successfully"; } Else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); } Mysqli_close ($ conn); ?>

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

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

$ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')";

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

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

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

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql = це SQL запит.

Наступна частина коду (20 - 22 рядки) запускає наш запит і робить перевірку успішності виконання запиту:

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

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

І заключна частина (22 - 24 рядки) показують інше повідомлення, на випадок невдалого виконання нашого запиту:

else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); }

Цей код відображає нам повідомлення про помилку, на випадок, якщо щось пішло не так.

Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)

Як і в попередньому прикладі, нам потрібно перш за все виконати підключення до бази даних, яке виробляється при створенні нового об'єкта PDO - попереднє керівництво розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL - це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$ The_Object-> the_Method ();

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

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

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

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

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

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

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

У рядках 28, 29 і 30 ми використовуємо метод bindParam () об'єкта бази даних. Є так само метод bindValue (), що відрізняється від попереднього.

  • bindParam () - цей метод підраховує дані, коли метод execute () досягнуто. Перший раз, коли скрипт доходить до методу execute () він бачить, що $ first_Name посилається на "Thom", пов'язує це значення і виконує запит. Коли скрипт добирається вдруге до методу execute (), він дивиться, що $ first_Name тепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і потім підставляємо різні дані в різних місцях скрипта.
  • bindValue () - цей метод обчислює дані, як тільки до нього доходить черга. Так як значення $ first_Name було задано як "Thom", на момент, коли ми досягли методу bindValue (), воно буде використаний при виклику методу execute () для $ my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $ first_Name і задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипта, там будуть обидва з заданих імені, попри це значення змінної $ first_Name дорівнюватиме "John" в кінці цього скрипта. Пам'ятайте, що PHP оцінює вміст скрипта перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParam на bindValue, ви додасте в базу MySQL "Thom Vial" двічі в базу даних і John Smith буде проігнорований.

Крок 3 - Перевірка успішності виконання і вирішення спільних питань

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

Рішення поширених помилок

MySQLi

У будь-якому іншому випадку замість повідомлення, наведеного вище, буде показано повідомлення про помилку. Наприклад, давайте припустимо одну синтаксичну помилку в нашому коді і ми отримаємо таке:

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES (' Thom ',' Vial ',' [email protected] ')' at line 1 "

Допущена синтаксична помилка, яка призводить до невдачі у виконанні нашого скрипта. Помилка була тут:

$ Sql ​​= "INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]')";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це невірно і призводить до синтаксичну помилку в нашому скрипті.

PDO

У рядку 7 підключення PDO, режим обробки помилок встановлений в 'display all exceptions' (відображати всі винятки). Якщо ви це приберете з скрипта і запит зазнає невдачі, ви не отримаєте ніякого повідомлення про помилку. З включеними винятками, будуть відображатися конкретні виникли проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних і таблиць, які ви б хотіли заховати від кого-небудь, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовувалися замість круглих, помилка виглядає, як показано нижче:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [42000]: Syntax error or access violation: 1064 Отримати You have an error in your SQL syntax; <Code> 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 "</ code>

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля або помилки в написанні назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо привласнити значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, "47", помилки не буде, тому що наше число буде записано як рядок в це поле.
  • Спроба ввести дані в таблицю, якої не існує або помилка в написанні назви таблиці.

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

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

висновок

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

Як зробити запис в базу даних MySQL, використовуючи PHP код

вступ

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

що знадобиться

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі управління хостингом

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

Перш за все, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdmin з вашої панелі управління хостингом. Ми вже описували процес створення бази даних MySQL в попередньому керівництві (Англ.), Тому ми пропустимо цей момент тут. Перш за все, нам потрібно створити таблицю для ваших даних

Після входу на сторінку phpMyAdmin ви побачите подібну картину: Після входу на сторінку phpMyAdmin ви побачите подібну картину:

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

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

<? Php $ servername = "mysql.hostinger.co.uk"; $ Database = "u266072517_name"; $ Username = "u266072517_user"; $ Password = "buystuffpwd"; // Create connection $ conn = mysqli_connect ($ servername, $ username, $ password, $ database); // Check connection if (! $ Conn) {die ( "Connection failed:". Mysqli_connect_error ()); } Echo "Connected successfully"; $ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')"; if (mysqli_query ($ conn, $ sql)) {echo "New record created successfully"; } Else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); } Mysqli_close ($ conn); ?>

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

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

$ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')";

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

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

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

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql = це SQL запит.

Наступна частина коду (20 - 22 рядки) запускає наш запит і робить перевірку успішності виконання запиту:

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

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

І заключна частина (22 - 24 рядки) показують інше повідомлення, на випадок невдалого виконання нашого запиту:

else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); }

Цей код відображає нам повідомлення про помилку, на випадок, якщо щось пішло не так.

Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)

Як і в попередньому прикладі, нам потрібно перш за все виконати підключення до бази даних, яке виробляється при створенні нового об'єкта PDO - попереднє керівництво розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL - це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$ The_Object-> the_Method ();

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

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

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

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

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

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

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

У рядках 28, 29 і 30 ми використовуємо метод bindParam () об'єкта бази даних. Є так само метод bindValue (), що відрізняється від попереднього.

  • bindParam () - цей метод підраховує дані, коли метод execute () досягнуто. Перший раз, коли скрипт доходить до методу execute () він бачить, що $ first_Name посилається на "Thom", пов'язує це значення і виконує запит. Коли скрипт добирається вдруге до методу execute (), він дивиться, що $ first_Name тепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і потім підставляємо різні дані в різних місцях скрипта.
  • bindValue () - цей метод обчислює дані, як тільки до нього доходить черга. Так як значення $ first_Name було задано як "Thom", на момент, коли ми досягли методу bindValue (), воно буде використаний при виклику методу execute () для $ my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $ first_Name і задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипта, там будуть обидва з заданих імені, попри це значення змінної $ first_Name дорівнюватиме "John" в кінці цього скрипта. Пам'ятайте, що PHP оцінює вміст скрипта перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParam на bindValue, ви додасте в базу MySQL "Thom Vial" двічі в базу даних і John Smith буде проігнорований.

Крок 3 - Перевірка успішності виконання і вирішення спільних питань

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

Рішення поширених помилок

MySQLi

У будь-якому іншому випадку замість повідомлення, наведеного вище, буде показано повідомлення про помилку. Наприклад, давайте припустимо одну синтаксичну помилку в нашому коді і ми отримаємо таке:

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES (' Thom ',' Vial ',' [email protected] ')' at line 1 "

Допущена синтаксична помилка, яка призводить до невдачі у виконанні нашого скрипта. Помилка була тут:

$ Sql ​​= "INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]')";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це невірно і призводить до синтаксичну помилку в нашому скрипті.

PDO

У рядку 7 підключення PDO, режим обробки помилок встановлений в 'display all exceptions' (відображати всі винятки). Якщо ви це приберете з скрипта і запит зазнає невдачі, ви не отримаєте ніякого повідомлення про помилку. З включеними винятками, будуть відображатися конкретні виникли проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних і таблиць, які ви б хотіли заховати від кого-небудь, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовувалися замість круглих, помилка виглядає, як показано нижче:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [42000]: Syntax error or access violation: 1064 Отримати You have an error in your SQL syntax; <Code> 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 "</ code>

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля або помилки в написанні назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо привласнити значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, "47", помилки не буде, тому що наше число буде записано як рядок в це поле.
  • Спроба ввести дані в таблицю, якої не існує або помилка в написанні назви таблиці.

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

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

висновок

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

Як зробити запис в базу даних MySQL, використовуючи PHP код

вступ

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

що знадобиться

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі управління хостингом

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

Перш за все, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdmin з вашої панелі управління хостингом. Ми вже описували процес створення бази даних MySQL в попередньому керівництві (Англ.), Тому ми пропустимо цей момент тут. Перш за все, нам потрібно створити таблицю для ваших даних

Після входу на сторінку phpMyAdmin ви побачите подібну картину: Після входу на сторінку phpMyAdmin ви побачите подібну картину:

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

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

<? Php $ servername = "mysql.hostinger.co.uk"; $ Database = "u266072517_name"; $ Username = "u266072517_user"; $ Password = "buystuffpwd"; // Create connection $ conn = mysqli_connect ($ servername, $ username, $ password, $ database); // Check connection if (! $ Conn) {die ( "Connection failed:". Mysqli_connect_error ()); } Echo "Connected successfully"; $ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')"; if (mysqli_query ($ conn, $ sql)) {echo "New record created successfully"; } Else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); } Mysqli_close ($ conn); ?>

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

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

$ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')";

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

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

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

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql = це SQL запит.

Наступна частина коду (20 - 22 рядки) запускає наш запит і робить перевірку успішності виконання запиту:

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

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

І заключна частина (22 - 24 рядки) показують інше повідомлення, на випадок невдалого виконання нашого запиту:

else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); }

Цей код відображає нам повідомлення про помилку, на випадок, якщо щось пішло не так.

Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)

Як і в попередньому прикладі, нам потрібно перш за все виконати підключення до бази даних, яке виробляється при створенні нового об'єкта PDO - попереднє керівництво розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL - це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$ The_Object-> the_Method ();

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

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

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

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

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

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

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

У рядках 28, 29 і 30 ми використовуємо метод bindParam () об'єкта бази даних. Є так само метод bindValue (), що відрізняється від попереднього.

  • bindParam () - цей метод підраховує дані, коли метод execute () досягнуто. Перший раз, коли скрипт доходить до методу execute () він бачить, що $ first_Name посилається на "Thom", пов'язує це значення і виконує запит. Коли скрипт добирається вдруге до методу execute (), він дивиться, що $ first_Name тепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і потім підставляємо різні дані в різних місцях скрипта.
  • bindValue () - цей метод обчислює дані, як тільки до нього доходить черга. Так як значення $ first_Name було задано як "Thom", на момент, коли ми досягли методу bindValue (), воно буде використаний при виклику методу execute () для $ my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $ first_Name і задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипта, там будуть обидва з заданих імені, попри це значення змінної $ first_Name дорівнюватиме "John" в кінці цього скрипта. Пам'ятайте, що PHP оцінює вміст скрипта перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParam на bindValue, ви додасте в базу MySQL "Thom Vial" двічі в базу даних і John Smith буде проігнорований.

Крок 3 - Перевірка успішності виконання і вирішення спільних питань

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

Рішення поширених помилок

MySQLi

У будь-якому іншому випадку замість повідомлення, наведеного вище, буде показано повідомлення про помилку. Наприклад, давайте припустимо одну синтаксичну помилку в нашому коді і ми отримаємо таке:

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES (' Thom ',' Vial ',' [email protected] ')' at line 1 "

Допущена синтаксична помилка, яка призводить до невдачі у виконанні нашого скрипта. Помилка була тут:

$ Sql ​​= "INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]')";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це невірно і призводить до синтаксичну помилку в нашому скрипті.

PDO

У рядку 7 підключення PDO, режим обробки помилок встановлений в 'display all exceptions' (відображати всі винятки). Якщо ви це приберете з скрипта і запит зазнає невдачі, ви не отримаєте ніякого повідомлення про помилку. З включеними винятками, будуть відображатися конкретні виникли проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних і таблиць, які ви б хотіли заховати від кого-небудь, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовувалися замість круглих, помилка виглядає, як показано нижче:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [42000]: Syntax error or access violation: 1064 Отримати You have an error in your SQL syntax; <Code> 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 "</ code>

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля або помилки в написанні назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо привласнити значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, "47", помилки не буде, тому що наше число буде записано як рядок в це поле.
  • Спроба ввести дані в таблицю, якої не існує або помилка в написанні назви таблиці.

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

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

висновок

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

Як зробити запис в базу даних MySQL, використовуючи PHP код

вступ

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

що знадобиться

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі управління хостингом

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

Перш за все, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdmin з вашої панелі управління хостингом. Ми вже описували процес створення бази даних MySQL в попередньому керівництві (Англ.), Тому ми пропустимо цей момент тут. Перш за все, нам потрібно створити таблицю для ваших даних

Після входу на сторінку phpMyAdmin ви побачите подібну картину: Після входу на сторінку phpMyAdmin ви побачите подібну картину:

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

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

<? Php $ servername = "mysql.hostinger.co.uk"; $ Database = "u266072517_name"; $ Username = "u266072517_user"; $ Password = "buystuffpwd"; // Create connection $ conn = mysqli_connect ($ servername, $ username, $ password, $ database); // Check connection if (! $ Conn) {die ( "Connection failed:". Mysqli_connect_error ()); } Echo "Connected successfully"; $ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')"; if (mysqli_query ($ conn, $ sql)) {echo "New record created successfully"; } Else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); } Mysqli_close ($ conn); ?>

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

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

$ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')";

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

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

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

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql = це SQL запит.

Наступна частина коду (20 - 22 рядки) запускає наш запит і робить перевірку успішності виконання запиту:

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

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

І заключна частина (22 - 24 рядки) показують інше повідомлення, на випадок невдалого виконання нашого запиту:

else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); }

Цей код відображає нам повідомлення про помилку, на випадок, якщо щось пішло не так.

Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)

Як і в попередньому прикладі, нам потрібно перш за все виконати підключення до бази даних, яке виробляється при створенні нового об'єкта PDO - попереднє керівництво розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL - це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$ The_Object-> the_Method ();

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

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

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

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

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

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

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

У рядках 28, 29 і 30 ми використовуємо метод bindParam () об'єкта бази даних. Є так само метод bindValue (), що відрізняється від попереднього.

  • bindParam () - цей метод підраховує дані, коли метод execute () досягнуто. Перший раз, коли скрипт доходить до методу execute () він бачить, що $ first_Name посилається на "Thom", пов'язує це значення і виконує запит. Коли скрипт добирається вдруге до методу execute (), він дивиться, що $ first_Name тепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і потім підставляємо різні дані в різних місцях скрипта.
  • bindValue () - цей метод обчислює дані, як тільки до нього доходить черга. Так як значення $ first_Name було задано як "Thom", на момент, коли ми досягли методу bindValue (), воно буде використаний при виклику методу execute () для $ my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $ first_Name і задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипта, там будуть обидва з заданих імені, попри це значення змінної $ first_Name дорівнюватиме "John" в кінці цього скрипта. Пам'ятайте, що PHP оцінює вміст скрипта перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParam на bindValue, ви додасте в базу MySQL "Thom Vial" двічі в базу даних і John Smith буде проігнорований.

Крок 3 - Перевірка успішності виконання і вирішення спільних питань

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

Рішення поширених помилок

MySQLi

У будь-якому іншому випадку замість повідомлення, наведеного вище, буде показано повідомлення про помилку. Наприклад, давайте припустимо одну синтаксичну помилку в нашому коді і ми отримаємо таке:

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES (' Thom ',' Vial ',' [email protected] ')' at line 1 "

Допущена синтаксична помилка, яка призводить до невдачі у виконанні нашого скрипта. Помилка була тут:

$ Sql ​​= "INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]')";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це невірно і призводить до синтаксичну помилку в нашому скрипті.

PDO

У рядку 7 підключення PDO, режим обробки помилок встановлений в 'display all exceptions' (відображати всі винятки). Якщо ви це приберете з скрипта і запит зазнає невдачі, ви не отримаєте ніякого повідомлення про помилку. З включеними винятками, будуть відображатися конкретні виникли проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних і таблиць, які ви б хотіли заховати від кого-небудь, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовувалися замість круглих, помилка виглядає, як показано нижче:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [42000]: Syntax error or access violation: 1064 Отримати You have an error in your SQL syntax; <Code> 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 "</ code>

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля або помилки в написанні назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо привласнити значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, "47", помилки не буде, тому що наше число буде записано як рядок в це поле.
  • Спроба ввести дані в таблицю, якої не існує або помилка в написанні назви таблиці.

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

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

висновок

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

Як зробити запис в базу даних MySQL, використовуючи PHP код

вступ

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

що знадобиться

Перед початком перевірте наявність наступного:

  • Доступ до вашої панелі управління хостингом

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

Перш за все, нам потрібно створити таблицю для ваших даних. Це дуже проста процедура, яку ви можете зробити в phpMyAdmin з вашої панелі управління хостингом. Ми вже описували процес створення бази даних MySQL в попередньому керівництві (Англ.), Тому ми пропустимо цей момент тут. Перш за все, нам потрібно створити таблицю для ваших даних

Після входу на сторінку phpMyAdmin ви побачите подібну картину: Після входу на сторінку phpMyAdmin ви побачите подібну картину:

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

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

<? Php $ servername = "mysql.hostinger.co.uk"; $ Database = "u266072517_name"; $ Username = "u266072517_user"; $ Password = "buystuffpwd"; // Create connection $ conn = mysqli_connect ($ servername, $ username, $ password, $ database); // Check connection if (! $ Conn) {die ( "Connection failed:". Mysqli_connect_error ()); } Echo "Connected successfully"; $ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')"; if (mysqli_query ($ conn, $ sql)) {echo "New record created successfully"; } Else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); } Mysqli_close ($ conn); ?>

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

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

$ Sql ​​= "INSERT INTO Students (name, lastname, email) VALUES ( 'Thom', 'Vial', '[email protected]')";

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

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

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

Що важливо відзначити, що тут ми формуємо запит SQL, використовуючи PHP код. SQL запити повинні бути укладені в лапки. У нашому прикладі, все між лапками і йде після $ sql = це SQL запит.

Наступна частина коду (20 - 22 рядки) запускає наш запит і робить перевірку успішності виконання запиту:

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

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

І заключна частина (22 - 24 рядки) показують інше повідомлення, на випадок невдалого виконання нашого запиту:

else {echo "Error:". $ Sql. "<br>". mysqli_error ($ conn); }

Цей код відображає нам повідомлення про помилку, на випадок, якщо щось пішло не так.

Варіант 2 - Метод об'єктів даних PHP (PHP D ata O bject)

Як і в попередньому прикладі, нам потрібно перш за все виконати підключення до бази даних, яке виробляється при створенні нового об'єкта PDO - попереднє керівництво розповідає про те, як це відбувається. Оскільки підключення до бази даних MySQL - це PDO об'єкт, ми повинні використовувати різні PDO 'методи' (свого роду функції, які є частиною певного об'єкта) для підготовки та запуску запиту. Методи об'єктів викликаються таким чином:

$ The_Object-> the_Method ();

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

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

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

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

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

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

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

У рядках 28, 29 і 30 ми використовуємо метод bindParam () об'єкта бази даних. Є так само метод bindValue (), що відрізняється від попереднього.

  • bindParam () - цей метод підраховує дані, коли метод execute () досягнуто. Перший раз, коли скрипт доходить до методу execute () він бачить, що $ first_Name посилається на "Thom", пов'язує це значення і виконує запит. Коли скрипт добирається вдруге до методу execute (), він дивиться, що $ first_Name тепер посилається на "John", пов'язує це значення і запускає запит знову з новим значенням. Важливо розуміти, що ми створюємо запит один раз і потім підставляємо різні дані в різних місцях скрипта.
  • bindValue () - цей метод обчислює дані, як тільки до нього доходить черга. Так як значення $ first_Name було задано як "Thom", на момент, коли ми досягли методу bindValue (), воно буде використаний при виклику методу execute () для $ my_Insert_Statement.

Зверніть увагу, що ми повторно використовуємо змінну $ first_Name і задаємо їй нове значення вдруге. Якщо ви перевірите свою базу даних після запуску цього скрипта, там будуть обидва з заданих імені, попри це значення змінної $ first_Name дорівнюватиме "John" в кінці цього скрипта. Пам'ятайте, що PHP оцінює вміст скрипта перед його запуском.

Якщо ви зміните свій скрипт замінивши bindParam на bindValue, ви додасте в базу MySQL "Thom Vial" двічі в базу даних і John Smith буде проігнорований.

Крок 3 - Перевірка успішності виконання і вирішення спільних питань

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

Рішення поширених помилок

MySQLi

У будь-якому іншому випадку замість повідомлення, наведеного вище, буде показано повідомлення про помилку. Наприклад, давайте припустимо одну синтаксичну помилку в нашому коді і ми отримаємо таке:

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

"Error: INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES (' Thom ',' Vial ',' [email protected] ')' at line 1 "

Допущена синтаксична помилка, яка призводить до невдачі у виконанні нашого скрипта. Помилка була тут:

$ Sql ​​= "INSERT INTO Students {name, lastname, email} VALUES ( 'Thom', 'Vial', '[email protected]')";

Як ви бачите, ми використовуємо фігурні дужки замість круглих. Це невірно і призводить до синтаксичну помилку в нашому скрипті.

PDO

У рядку 7 підключення PDO, режим обробки помилок встановлений в 'display all exceptions' (відображати всі винятки). Якщо ви це приберете з скрипта і запит зазнає невдачі, ви не отримаєте ніякого повідомлення про помилку. З включеними винятками, будуть відображатися конкретні виникли проблеми. В основному, це краще використовувати, коли розробляєте скрипт, так як це може виявити імена баз даних і таблиць, які ви б хотіли заховати від кого-небудь, хто може отримати несанкціонований доступ до ваших даних. У разі вище, коли фігурні дужки використовувалися замість круглих, помилка виглядає, як показано нижче:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE [42000]: Syntax error or access violation: 1064 Отримати You have an error in your SQL syntax; <Code> 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 "</ code>

Інші проблеми, з якими ви можете зіткнутися:

  • Невірно вказані поля (неіснуючі поля або помилки в написанні назв).
  • Невідповідність типу значення типу поля. Наприклад, коли ми хочемо привласнити значення числа 47 полю Name, ми отримаємо помилку, тому що передбачається, що значення буде рядком. Але, якщо ви вкажете число в лапках, наприклад, "47", помилки не буде, тому що наше число буде записано як рядок в це поле.
  • Спроба ввести дані в таблицю, якої не існує або помилка в написанні назви таблиці.

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

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

висновок

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

Mysqli_error ($ conn); } Mysqli_close ($ conn); ?
Mysqli_error ($ conn); } Mysqli_close ($ conn); ?
Mysqli_error ($ conn); } Mysqli_close ($ conn); ?
Mysqli_error ($ conn); } Mysqli_close ($ conn); ?
Mysqli_error ($ conn); } Mysqli_close ($ conn); ?