Мой 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-скрипт работает без ошибок, вроде все в порядке, но записей в БД нет.
Я думаю, вам нужно проверить на наличие ошибок, а не просто предполагать, что все работает.
echo "Data entered!"; не означает, что ваш INSERT выполнен успешно, потому что это сообщение будет отображаться независимо от того, выполнен запрос или нет.
во-первых, поделитесь результатом print_r($_POST) что вы получаете во-вторых, используйте это, чтобы получить ошибку запроса die(mysqli_error($con)); в-третьих, ваш код широко открыт для SQL-инъекций
Я проверил соединение на наличие ошибок, и оно работает, сообщение об ошибке отображается, когда что-то меняется. Я также думал о формате даты, но разве я не должен получать все нули в таблице вместо пустой таблицы?
Чтобы убедиться, что запрос был успешно выполнен, попробуйте: mysqli_query($con,"INSERT INTO events(start_date,end_date,type) VALUES('$startdate','$enddate','$type')") or die(mysqli_error($con));
если вы получаете все нули, это означает, что вы используете тип данных DATE, но ваш формат даты неверен.
поделитесь результатом print_r($_POST), а также поделитесь типом данных ваших столбцов даты..






Отправьте все даты, которые вы хотите INSERT с помощью SQL через date(), вот так:
$date = date('Y-m-d', strtotime($_POST['date']));
Можете ли вы объяснить это дальше? Что заставляет вас думать, что именно эта часть решает проблему?
У OP могут быть проблемы с фильтром даты, если даты неправильно отформатированы для работы в SQL.
В вашем PHP-скрипте нет ничего плохого. Это просто исходит из ввода. Убедитесь, что у вас есть стандартный формат, например
"YYYY-MM-DD" (use - 'hypen').
MySql не будет отвечать, если вы используете другой формат, например
"YYYY/MM/DD" -> this won't work.
я думаю, вам нужно проверить формат даты, что вы получаете
$_POST, а затем преобразовать в соответствии с требованиями MySQL, например «ГГГГ-ММ-ДД», если вы действительно используете тип данныхDate, вам также нужно изучить php error_reporting ()