С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 30.07.2017
Сообщений: 24

Не отправляются данные из формы в базу данных MySQL

30.07.2017, 14:56. Показов 8158. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день!
Понимаю, что тема баян, но всё-таки помогите решить проблему с записью данных из html-формы в базу данных MySQL. Код файлов приведён ниже:

1) Код файла html-формы:

Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<link rel="stylesheet" href="style.css"  type="text/css">
<title>Форма</title>
</head>
 
<body>
<form action="form.php" method="POST" name="form">
<fieldset>
<label for="name">Имя:</label><br/>
<input type="text" name="name" size="30"><br/>
</fieldset>
<br/>
<fieldset>
<input name="submitButton" type="submit" value="Записаться"><br/>
</fieldset>
</form>
</body>
</html>


2) Код файла form.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require_once 'connect.php'; // подключаем скрипт
 
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
 
// выполняем операции с базой данных
 
if (isset($_POST['submitButton'])) {
$name = trim($_POST['name']);
$query = "INSERT INTO clients (name) VALUES ('$name')";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
//Если запрос пройдет успешно то в переменную result вернется true
if ($result == true) {
    echo "Ваши данные успешно добавлены";
}
else {
    echo "Ваши данные не добавлены";
}
}
echo mysqli_error($link);
// закрываем подключение
mysqli_close($link);
?>


3) Код файла connect.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
<?php
$host = 'localhost'; // адрес сервера 
$database = 'q_db'; // имя базы данных
$user = 'root'; // имя пользователя
$password = 'тутмойпароль'; // пароль
?>



При заполнении формы и нажатии кнопки открывается страница со следующим кодом:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
require_once 'connect.php'; // –њ–Њ–і–Ї–ї—О—З–∞–µ–Љ —Б–Ї—А–Є–њ—В
 
// –њ–Њ–і–Ї–ї—О—З–∞–µ–Љ—Б—П –Ї —Б–µ—А–≤–µ—А—Г
$link = mysqli_connect($host, $user, $password, $database) 
    or die("–Ю—И–Є–±–Ї–∞ " . mysqli_error($link));
 
// –≤—Л–њ–Њ–ї–љ—П–µ–Љ –Њ–њ–µ—А–∞—Ж–Є–Є —Б –±–∞–Ј–Њ–є –і–∞–љ–љ—Л—Е
 
if (isset($_POST['submitButton'])) {
$name = trim($_POST['name']);
$query = "INSERT INTO clients (name) VALUES ('$name')";
#$surname = trim($_POST['surname']);
#$phone = trim($_POST['phone']);
#$date = trim($_POST['date']);
#$time = trim($_POST['time']);
#$comment = trim($_POST['comment']);
$result = mysqli_query($link, $query) or die("–Ю—И–Є–±–Ї–∞ " . mysqli_error($link));
//–Х—Б–ї–Є –Ј–∞–њ—А–Њ—Б –њ—А–Њ–є–і–µ—В —Г—Б–њ–µ—И–љ–Њ —В–Њ –≤ –њ–µ—А–µ–Љ–µ–љ–љ—Г—О result –≤–µ—А–љ–µ—В—Б—П true
if ($result == true) {
    echo "–Т–∞—И–Є –і–∞–љ–љ—Л–µ —Г—Б–њ–µ—И–љ–Њ –і–Њ–±–∞–≤–ї–µ–љ—Л";
}
else {
    echo "–Т–∞—И–Є –і–∞–љ–љ—Л–µ –љ–µ –і–Њ–±–∞–≤–ї–µ–љ—Л";
}
}
echo mysqli_error($link);
// –Ј–∞–Ї—А—Л–≤–∞–µ–Љ –њ–Њ–і–Ї–ї—О—З–µ–љ–Є–µ
mysqli_close($link);
?>


Тут что-то непонятное творится с кодировкой...

Правильно ли я настроил подключение к БД и передачу данных из html-формы в БД MySQL? На скриншоте настройки таблицы clients БД q_db.

Спасибо за внимание

Данные системы:
Mac OS X 10.12.6 (Sierra)
Сервер баз данных
Кликните здесь для просмотра всего текста
Сервер: Localhost via UNIX socket
Тип сервера: MySQL
Версия сервера: 5.7.19-ndb-7.5.7-cluster-gpl - MySQL Cluster Community Server (GPL)
Версия протокола: 10
Пользователь: root@localhost
Кодировка сервера: UTF-8 Unicode (utf8)

Веб-сервер
Кликните здесь для просмотра всего текста
Apache/2.4.25 (Unix) PHP/5.6.30
Версия клиента базы данных: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id$
PHP расширение: mysqli, curl, mbstring
Версия PHP: 5.6.30

phpMyAdmin версии: 4.7.3 (актуально)
Миниатюры
Не отправляются данные из формы в базу данных MySQL  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2017, 14:56
Ответы с готовыми решениями:

Не отправляются данные с формы в базу
Здравстуйте, такая вот проблема, ошибки не выводит хотя я делаю проверку. В чем может быть проблема? Вот форма &lt;div...

Ajax отправка данных из формы в базу mysql и вывод из базы mysql
$(function() { $('#chat_submit').click(function(e) { e.preventDefault(); var chat_name =...

Не записываются данные из формы в базу Mysql
Есть текстовое поле в форме, поле TEXT, из формы данные записываются в базу Mysql. Происходит такая вещь: если текст содержит символ...

7
0 / 0 / 0
Регистрация: 30.07.2017
Сообщений: 24
30.07.2017, 15:14  [ТС]
UPD: При заполнении формы и нажатии кнопки открывается страница со следующим кодом:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require_once 'connect.php'; // подключаем скрипт
 
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
 
// выполняем операции с базой данных
 
if (isset($_POST['submitButton'])) {
$name = trim($_POST['name']);
$query = "INSERT INTO clients (name) VALUES ('$name')";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
//Если запрос пройдет успешно то в переменную result вернется true
if ($result == true) {
    echo "Ваши данные успешно добавлены";
}
else {
    echo "Ваши данные не добавлены";
}
}
echo mysqli_error($link);
// закрываем подключение
mysqli_close($link);
?>


Исправил кодировку для удобочитаемости
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
30.07.2017, 18:47
PHP
1
$result = mysqli_query("INSERT INTO clients (name) VALUES ('$name')") or die("Ошибка " . mysqli_error($link));
так попробуйте напрямую
0
0 / 0 / 0
Регистрация: 30.07.2017
Сообщений: 24
30.07.2017, 21:51  [ТС]
andyyy
так попробуйте напрямую
не работает

Отдельно запрос в phpMyAdmin работает.
SQL
1
INSERT INTO clients (name) VALUES ('$name');
Может оно не смогло подключиться к базе?

Добавлено через 14 минут
UPD: Протестировал скриптом подключение к БД MySQL - "Соединение установлено. Подключение к базе данных прошло успешно."

Код скрипта прилагаю:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
// Простенький скрипт, для проверки работы связки PHP+MySQL.
// Скрипт выполняет подключение к серверу MySQL и, если успешно, то к базе данных.
// В значения переменных указываем свои данные!
 
 
$server = 'localhost'; // адрес сервера баз данных
$user = 'root'; // имя пользователя БД
$password = 'ВАШПАРОЛЬ'; //пароль пользователя
 
$dblink = mysql_connect($server, $user, $password);
 
if($dblink)
echo 'Соединение установлено.';
else
die('Ошибка подключения к серверу баз данных.');
 
$database = 'q_db'; // имя базы данных
$selected = mysql_select_db($database, $dblink);
if($selected)
echo ' Подключение к базе данных прошло успешно.';
else
die(' База данных не найдена или отсутствует доступ.');
 
// Выполняем скрипт, и если соединение прошло успешно – получим такой ответ:
// Соединение установлено.
// Подключение к базе данных прошло успешно.
 
// А в случае ошибки:
// Ошибка подключения к серверу баз данных.
// База данных не найдена или отсутствует доступ.
 
// Если ошибка в логине или пароле – получим об этом сообщение такого вида:
// Warning: mysql_connect(): Access denied for user 'dbuser'@'localhost' (using password: YES)
// Ошибка подключения к серверу баз данных.
 
?>


Может пригодиться новичкам, таким как я

Добавлено через 2 часа 17 минут
В общем, несколько часов мучений, сотни запросов в Google и окончательный код выглядит так

1) Код файла html-формы:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<link rel="stylesheet" href="style.css"  type="text/css">
<title>Форма</title>
</head>
 
<body>
<form action="form.php" method="POST" name="form">
<fieldset>
<label for="name">Имя:</label><br/>
<input type="text" name="name" size="30"><br/>
</fieldset>
<br/>
<fieldset>
<input name="submitButton" type="submit" value="Записаться"><br/>
</fieldset>
</form>
</body>
</html>


2) Код файла form.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
require_once("connection.php"); // подключаем скрипт
 
// выполняем операции с базой данных
 
if (isset($_POST['submitButton'])) {
$name = strip_tags(trim($_POST['name']));
$query = "INSERT INTO clients (name) VALUES ('$name')";
$result = mysqli_query($connection, $query) or die("Ошибка " . mysqli_error($connection));
 
//Если запрос пройдет успешно то в переменную result вернется true
if ($result == true) {
    echo "Ваши заявка отправлена!";
}
else {
    echo "По каким-то причинам Ваша заявка не была отправлена!";
}
}
 
?>


3) Код файла connection.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 
// Простенький скрипт, для проверки работы связки PHP+MySQL.
// Скрипт выполняет подключение к серверу MySQL и, если успешно, то к базе данных.
// В значения переменных указываем свои данные!
 
$server = 'localhost'; // адрес сервера баз данных
$user = 'root'; // имя пользователя БД
$password = 'ВАШ_ПАРОЛЬ_К_БД'; // пароль пользователя
$database = 'q_db'; // имя базы данных
 
$connection = mysqli_connect($server, $user, $password);
 
mysqli_set_charset($connection, 'utf8');
 
// if($connection)
// echo 'Соединение установлено.';
// else
// die('Ошибка подключения к серверу баз данных.');
 
$selected = mysqli_select_db($connection, $database);
 
// if($selected)
// echo ' Подключение к базе данных прошло успешно.';
// else
// die(' База данных не найдена или отсутствует доступ.');
 
// Выполняем скрипт, и если соединение прошло успешно – получим такой ответ:
// Соединение установлено.
// Подключение к базе данных прошло успешно.
 
// А в случае ошибки:
// Ошибка подключения к серверу баз данных.
// База данных не найдена или отсутствует доступ.
 
// Если ошибка в логине или пароле – получим об этом сообщение такого вида:
// Warning: mysql_connect(): Access denied for user 'dbuser'@'localhost' (using password: YES)
// Ошибка подключения к серверу баз данных.
 
?>


ВСЕМ СПАСИБО ЗА ВНИМАНИЕ!

P.S. Важные выводы для себя:
Кликните здесь для просмотра всего текста
Обратите внимание, что везде используется mysqli, активировать который нужно в файле php.ini.
Также у меня ошибка была в том, что не той последовательности были указаны переменные, особенно:
  • в функции mysqli_set_charset() если переставить переменные $connection и 'utf8' местами, то будет ошибка в кодировке типа
    Warning: mysqli_set_charset() expects parameter 1 to be mysqli, string given in /Users/~username/sites/connection.php on line 14
    Соединение установлено. Подключение к базе данных прошло успешно.
  • в функции mysqli_select_db() если переставить переменные $connection и $database местами, то будет ошибка типа
    Соединение установлено.
    Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /Users/~username/sites/connection.php on line 21
    База данных не найдена или отсутствует доступ.
  • аналогичная ошибка может произойти и в функции mysqli_query()
    Соединение установлено. Подключение к базе данных прошло успешно.
    Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /Users/~username/sites/form.php on line 18
    Ошибка
Какой отсюда сделаем важный вывод: сначала соединение с БД, а затем другие операции


P.P.S. В данный код больше ничего не нужно добавлять для надёжности?
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
31.07.2017, 12:37
Цитата Сообщение от Paul_REE Посмотреть сообщение
P.P.S. В данный код больше ничего не нужно добавлять для надёжности?
так где ошибка была))?
ну, как сзкать - может и мужно , а так сойдет)) ну там еще проверочки можно сделать дополонительные
0
0 / 0 / 0
Регистрация: 30.07.2017
Сообщений: 24
31.07.2017, 13:00  [ТС]
Цитата Сообщение от andyyy Посмотреть сообщение
так где ошибка была))?
Там был комплекс ошибок В т.ч. и не полностью настроенный php Не, ну а что вы хотите от человека со стажем программирования меньше суток
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
31.07.2017, 14:23
Цитата Сообщение от Paul_REE Посмотреть сообщение
человека со стажем программирования меньше суток
а ну, тогда респект)!
1
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 55
20.06.2019, 00:01
Paul_REE, Привет. я сделал все как ты, но когда добавил поля то что то не так.
Вот такая ошибка:
Соединение установлено. Подключение к базе данных прошло успешно.Ошибка Unknown column 'name' in 'field list'
Не пойму где оно, или как исправить?

Добавлено через 1 минуту
И вот еще, название строк в таблице должно быть одинаковы с названием строчек в форме?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2019, 00:01
Помогаю со студенческими работами здесь

Php+ajax передаю данные формы в базу mysql
От сюда $(function() { $('#chat_submit').click(function(e) { e.preventDefault(); var chat_name =...

Не отправляются данные в базу
Ломаю голову третий день. А уже думал что более менее разобрался с отправкой методом POST. В общем так. На странице заполняется форма...

Запрос на добавление данных в базу данных из формы. Mysql
Надо, чтобы данные вводились из формы. Я пишу так, но не знаю как дописать. &lt;html&gt;&lt;head&gt; ...

Не записываются данные в базу данных mysql
Приветствую! При регистрации, ошибок нет, говорит что регистрация успешна, а данных в самой базе нет. Вот код, скажите, может в нём...

Не заносятся данные в базу данных mysql
Добрый день, Столкнулся вот с такой проблемой,при нажатии на кнопку данные не записываются хотя в базе данных создается поля. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru