Вставка даты PHP с помощью datepicker

#php #mysql #sql #localhost

#php #mysql #sql #localhost

Вопрос:

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

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

if ($startdate amp;amp; $enddate amp;amp; $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!";
}


?>
  

Я выбираю даты с помощью datepicker, а тип выбирается с помощью опции select в html (доступно 3 варианта). Поля html-формы называются start, end, type. Поля в базе данных — start_date, end_date, type. PHP-скрипт выполняется без ошибок, и все кажется нормальным, но в базе данных нет записей.

Комментарии:

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

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

3. echo "Data entered!"; не означает, что ваша вставка выполнена успешно, потому что это сообщение будет отображаться либо запрос выполнен, либо нет.

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

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

Ответ №1:

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

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

Комментарии:

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

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

Ответ №2:

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

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

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

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