Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему при отправке данных через форму PHP в базу данных phpmyadmin Ошибок нет, но база не заполняется данными??

диана стратила Ученик (122), на голосовании 2 года назад
Почему при отправке данных через форму PHP в базу данных phpmyadmin Ошибок нет, но база не заполняется данными??

// Переменные с формы
$ФИО = $_POST['ФИО'];
$НомерТелефона = $_POST['НомерТелефона'];
$Стаж = $_POST['Стаж'];

// Параметры для подключения
$db_host = " http://localhost/ ";
$db_user = "root"; // Логин БД
$db_password = ""; // Пароль БД
$db_base = 'школьныйдневник'; // Имя БД
$db_table = "учителя"; // Имя Таблицы БД

try {
// Подключение к базе данных
$db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password);
// Устанавливаем корректную кодировку
$db->exec("set names utf8");
// Собираем данные для запроса
$data = array( 'ФИО' => $ФИО, 'НомерТелефона' => $НомерТелефона, 'Стаж' => $Стаж );
// Подготавливаем SQL-запрос
$query = $db->prepare("INSERT INTO $db_table (ФИО, НомерТелефона, Стаж) values (:ФИО, :НомерТелефона, :Стаж)");
// Выполняем запрос с данными
$query->execute($data);
// Запишим в переменую, что запрос отрабтал
$result = true;
} catch (PDOException $e) {
// Если есть ошибка соединения или выполнения запроса, выводим её
print "Ошибка!: " . $e->getMessage() . "<br/>";
}
if ($result)
echo "Успех. Информация занесена в базу данных";
}
}
?>

ФОРМА
<form method="POST" action="create.php">
<input name="ФИО" type="text" placeholder="ФИО"/>
<input name="НомерТелефона" type="text" placeholder="НомерТелефона"/>
<input name="Стаж" type="text" placeholder="Стаж"/>
<input type="submit" value="Отправить"/>
</form>
Голосование за лучший ответ
Антибабораб Просветленный (48060) 2 года назад
Удалить надо прошлую
диана стратилаУченик (122) 2 года назад
вы имеете ввиду прошлые записи из бд?
www www Искусственный Интеллект (132986) 2 года назад
Я бы поостерегся использовать кириллицу в именах переменных и тем более в названиях таблиц и полей
партнер [www.a77r.ru] Мыслитель (8978) 2 года назад
попробуй названия взять в обратные кавычки
$query = $db->prepare("INSERT INTO $db_table (ФИО, НомерТелефона, Стаж) values

т.е. вот так `ФИО`
Лайт Ягами Искусственный Интеллект (309781) 2 года назад
А какой смысл присваивать $result = true и тут же его проверять?)))
Правильно делать так:
$result = $query->execute($data);
Тогда у нас там будет либо true, либо не true.
Сергей Стодольский Мастер (1212) 2 года назад
Кури мануал как строить и выполнять запрос, он у тебя не правильный
https://www.php.net/manual/ru/pdo.prepare.php
Сергей СтодольскийМастер (1212) 2 года назад
И да, не используй кирилицу в именах полей в базе данных
Сергей СтодольскийМастер (1212) 2 года назад
Так работает

<?php
$ФИО = "Марьванна"; // исправить обратно
$НомерТелефона = "+7 999 999 99 99"; // исправить обратно
$Стаж = "100"; // исправить обратно

$db_host = "localhost";
$db_user = "root";
$db_password = "root"; // исправить обратно
$db_base = 'test'; // исправить обратно
$db_table = "учителя";

try {
$db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password);
$data = array( $ФИО, $НомерТелефона, $Стаж );
$query = $db->prepare("INSERT INTO {$db_table} (`ФИО`, `Номер телефона`, `Стаж`) values (?, ?, ?)");
$result = $query->execute($data);
} catch (PDOException $e) {
print "Ошибка!: " . $e->getMessage() . "<br/>";
}
if ($result) {
echo "Успех. Информация занесена в базу данных";
} else {
echo var_dump($query->debugDumpParams());
}
Похожие вопросы