Вставка даты PHP с использованием средства выбора даты

Мой PHP-скрипт пишет "Данные введены!", но в базе нет записей. Вот код.

<?php
$startdate = $_POST['start'];
$enddate = $_POST['end'];
$type = $_POST['type'];

if ($startdate && $enddate && $type) {
$con=mysqli_connect("localhost", "root", "")or die("Can not connect to DB"); 
mysqli_select_db($con,"booker")or die("Can not select DB");
mysqli_query($con,"INSERT INTO events(start_date,end_date,type) VALUES('$startdate','$enddate','$type')");
echo "Data entered!";
}
else {
echo "Please fill in the form!";
}


?>

Я выбираю даты с помощью средства выбора даты, а тип выбирается с помощью опции выбора в html (доступно 3 варианта). Названия полей html формы – начало, конец, тип. Поля в БД: start_date, end_date, type. PHP-скрипт работает без ошибок, вроде все в порядке, но записей в БД нет.

я думаю, вам нужно проверить формат даты, что вы получаете $_POST, а затем преобразовать в соответствии с требованиями MySQL, например «ГГГГ-ММ-ДД», если вы действительно используете тип данных Date, вам также нужно изучить php error_reporting ()

devpro 06.03.2019 15:23

Я думаю, вам нужно проверить на наличие ошибок, а не просто предполагать, что все работает.

Jonnix 06.03.2019 15:24
echo "Data entered!"; не означает, что ваш INSERT выполнен успешно, потому что это сообщение будет отображаться независимо от того, выполнен запрос или нет.
devpro 06.03.2019 15:27

во-первых, поделитесь результатом print_r($_POST) что вы получаете во-вторых, используйте это, чтобы получить ошибку запроса die(mysqli_error($con)); в-третьих, ваш код широко открыт для SQL-инъекций

devpro 06.03.2019 15:34

Я проверил соединение на наличие ошибок, и оно работает, сообщение об ошибке отображается, когда что-то меняется. Я также думал о формате даты, но разве я не должен получать все нули в таблице вместо пустой таблицы?

Ricky97 06.03.2019 15:36

Чтобы убедиться, что запрос был успешно выполнен, попробуйте: mysqli_query($con,"INSERT INTO events(start_date,end_date,type) VALUES('$startdate','$enddate','$type')") or die(mysqli_error($con));

Victor 06.03.2019 15:39

если вы получаете все нули, это означает, что вы используете тип данных DATE, но ваш формат даты неверен.

devpro 06.03.2019 15:41

поделитесь результатом print_r($_POST), а также поделитесь типом данных ваших столбцов даты..

devpro 06.03.2019 15:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
567
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Отправьте все даты, которые вы хотите INSERT с помощью SQL через date(), вот так:

$date = date('Y-m-d', strtotime($_POST['date']));

Можете ли вы объяснить это дальше? Что заставляет вас думать, что именно эта часть решает проблему?

Nico Haase 06.03.2019 15:36

У OP могут быть проблемы с фильтром даты, если даты неправильно отформатированы для работы в SQL.

Daniel G 06.03.2019 15:38

В вашем PHP-скрипте нет ничего плохого. Это просто исходит из ввода. Убедитесь, что у вас есть стандартный формат, например

"YYYY-MM-DD" (use - 'hypen').

MySql не будет отвечать, если вы используете другой формат, например

"YYYY/MM/DD" -> this won't work.

Другие вопросы по теме