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

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

30.07.2017, 14:56. Показов 8213. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru