У меня возникла простая проблема с запросом, сравнивающим дату в таблице с датой ввода от пользователя. (дайте мне список всех людей в таблице с датой рождения «MM/DD/YYYY»).
При вводе нового человека в db я хочу проверить, что это лицо еще не находится в db. Поэтому, используя «firstname» «lastname» и «date of birth», запрашивается таблица, и если есть совпадение, появляется окно и говорит: «Вы уверены, что хотите сделать это, похоже, что человек уже введен».
НЕТ ПРОБЛЕМЫ с «первым именем» «фамилия» (у меня это хорошо работает), поэтому теперь я хочу добавить «дату рождения» в запрос. В начале я удалил «firstname» и «lastname» и использовал только «дату рождения».
Как «доказательство концепции» следующий запрос MySQL отлично работает на Workbench MySQL:
SET @testdate = "1934-06-06";
SELECT localid, firstname, lastname, dob FROM administrative WHERE dob = @testdate;
Столбец «д.р.» в таблице формат «дата» не «DateTime».
Так что я теперь переключиться на PHP и записать это как тест:
$frontenddob = "06/06/1934";
$dob = date("Y-m-d", strtotime($frontenddob));
echo "--$frontenddob--<br>"; //gives 06/06/1934
echo "--$dob--<br><br>"; //gives --1934-06-06-- ("--" added to "see" extra spaces)
echo "$dob"; echo "<br>"; //gives 1934-06-06
$host = "xx";
$user = "xx";
$password = "xx";
$dbname = "xx";
$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}
$query = " SELECT * FROM administrative WHERE dob = $dob ORDER BY lastname ASC ";
Типы пользователей в строку даты в формате мм/дд/гггг.
Он преобразуется в формат даты по дате («Y-m-d», strtotime ($ frontenddob)) ;.
«Echos» показывает, что правильное преобразование - «echo $ dob» дает мне 1934-06-06.
Запроса отлично работает с < =,> =, <,> и я все испробовал =, ==, ===,> = $ Даты и < = $ даты и плот других - все безуспешно.
- Формат в таблице для dob (дата рождения) - это «дата», а не «дата-время».
- Формат даты ввода ввода пользователя преобразуется в формат даты в формате YYYY-MM-DD.
- Запрос работает с <,>, < =,> =.
Куда я иду не так?
Благодарю вас заранее.
Вы никогда не упоминаете, если он не дает записи или дает ошибку, но в качестве ответа @ nil'z вы пропустите одиночную кавычку около $ dob. –
Используйте 'var_dump' для отладки переменных и т. Д. Вместо' echo '- $ dob--
"; // дает --1934-06-06-- ("-" добавлен в "see" дополнительные пробелы) '... –
@Sumit Gupta - Спасибо за ваш ответ! Я преобразовываю массив в json и эхо json - все, что я получил, было «[]». Проблема решена путем добавления одинарных кавычек, как было отмечено вами, и предложенной Нильзом. Еще раз спасибо! – TimSPQR