MySQL запрос - как корректно указать дату при выборке?

XTD

Новичок
Добрый день!

Делаю такой вот запрос:

PHP:
$sql = mysql_query("SELECT * FROM order,order_product WHERE order.order_id=order_product.order_id AND DATE_FORMAT(order.date_added, '%Y-%m-%d')='2013-02-24'");
ВСЕ работает! НО, если подставить переменную, с таким же значением, запрос не происходит, ошибок НЕТ... В чем проблема?

PHP:
$mydate='2013-02-24'; // или "2013-02-24" - результат тот же... :(

$sql = mysql_query("SELECT * FROM order,order_product WHERE order.order_id=order_product.order_id AND DATE_FORMAT(order.date_added, '%Y-%m-%d')=$mydate");
HELP!
 

hell0w0rd

Продвинутый новичок
Вы в первом случае сравниваете строки, а во втором случае бд не знает о том, что аргумент - строка. И по моему лучше переменную привести к дате, чем дату к строке
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
XTD
Откуда такая уверенность про кавычки? Ошибку какую тебе выдает сервер на твой запрос?
 

XTD

Новичок
Вы в первом случае сравниваете строки, а во втором случае бд не знает о том, что аргумент - строка. И по моему лучше переменную привести к дате, чем дату к строке
PHP:
$mydate="2013-02-24 00:00:00";
$mydate1=strtotime("$mydate");
$mydate2=date("Y-m-d", $mydate1);
после преобразования строки в дату запрос не происходит, ответа нет... ошибок тоже нет...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Феноминально, показывай полный код, с отладкой и всем прочим, будем с тобой разбираться вместе... Пока мне сдается, что ты нас обманываешь.
 

hell0w0rd

Продвинутый новичок
XTD
Вы посылаете в БД запрос, для нее весь ваш запрос - строка. Чтобы отделить строки, числа, даты и прочее БД надо об этом как-то оповестить. Так вот строки заключаются в ' '
Советую пользоваться какой-нибудь библиотекой, или банальным sprintf
PHP:
$sql = mysql_query('SELECT * FROM order,order_product WHERE order.order_id=order_product.order_id AND DATE_FORMAT(order.date_added, '%Y-%m-%d')=\'%s\'', $date');
 

XTD

Новичок
Феноминально, показывай полный код, с отладкой и всем прочим, будем с тобой разбираться вместе... Пока мне сдается, что ты нас обманываешь.
Код очень прост... :) if (isset($_GET['getdata'])) { ... Приходит строка с датой, иначе берем текущую дату $mydate=date("Y-m-d"); Ее нужно подставить в MySQL запрос... Только вот запрос не хочет работать с переменной. Логи проверял - там пусто... :(
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
какие логи?

Что пишет mysql_error() сразу после запроса? Почему ты из запроса убрал кавычки?
 

Фанат

oncle terrible
Команда форума
Феноменально, показывай полный код, с отладкой и всем прочим, будем с тобой разбираться вместе... Пока мне сдается, что ты нас обманываешь.
Он еще в первом сообщении показал.
Что пишет mysql_error() сразу после запроса?
Ничего. А что там должно быть?

Код очень прост... :) Только вот запрос не хочет работать с переменной.(
Тебе уже 20 раз сказали, в чем проблема. Потрудись, наконец, прочесть. А лучше - сразу здесь: http://phpfaq.ru/slashes
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фанат
Кстати ты прав, ага, ошибка то не из синтаксических, я чего-то туплю.
 

XTD

Новичок
Фанат
Кстати ты прав, ага, ошибка то не из синтаксических, я чего-то туплю.
Все мы иногда ошибаемся... Спасибо Фанату за точную наводку! на_водку... :)

Вот так работает:

PHP:
$mydate='2013-02-24';

$sql = mysql_query("SELECT * FROM order,order_product WHERE order.order_id=order_product.order_id AND DATE_FORMAT(order.date_added, '%Y-%m-%d')=' ".mysql_real_escape_string($mydate)." ' ");
 

Фанат

oncle terrible
Команда форума
на мой взгляд - не должно

кстати, дата в таблице должна быть в формате %Y-%m-%d изначально
 
Сверху