2017-01-05 3 views
-1

Как говорится в заголовке, у меня есть эта проблема, пытаясь получить эту запись, мой запрос работает непосредственно в PHPMyAdmin, но когда я использую его в коде с PHP, он получает вторую последнюю записьПроблема с получением последней записи с самой последней датой - PHP

Мой второй последний запись имеет эти значения:

id_record = 17292 id_user = 6 my_date = 2016-12-31 11:09:08

Моего последней записи:

id_record = 17618 id_user = 6 my_date = 2017-01-05 13:37:21

Это запрос, я использую для достижения этой

SELECT id_record FROM my_table WHERE my_date = (SELECT MAX(my_date) FROM my_table WHERE id_user = 6 ORDER BY id_record DESC LIMIT 1) 

Когда я использую этот запрос непосредственно в PHPMyAdmin он отлично работает, он показывает запись с идентификатором 17618, но в коде на PHP он работает, но он получает вторую последнюю запись (17292), я понятия не имею, почему это происходит, у вас есть идея? Надеюсь, вы можете мне помочь, спасибо.

Это код PHP

$last_record = mysql_query("SELECT id_record FROM my_table WHERE my_date = (SELECT MAX(my_date) FROM my_table WHERE id_user = 6 ORDER BY id_record DESC LIMIT 1)") or die (mysql_error()); 
$last_record = mysql_fetch_assoc($last_record); 
$last_record = $last_record['id_record']; 
+0

Во-первых, здесь проще SQL: 'выбрать * из my_table где id_user = 6 упорядочить по my_date пределу по убыванию 1'. Во-вторых, вы указали код ZERO PHP, чтобы молиться, чтобы кто-то здесь мог взломать ваш компьютер и прочитать ваш код? – MonkeyZeus

+0

Я добавил код PHP – Fixer

+0

Проблема возникает, если вы измените SQL на то, что я сказал? Одно, что нужно проверить в вашем коде, было бы многократным использованием 'mysql_fetch_assoc()', потому что он извлекает одну запись каждый раз, когда вы ее вызываете. Если у вас есть какой-то сложный механизм циклирования, который запускает запрос на строку другого запроса и постоянно повторно использует '$ last_record', тогда это может вызвать проблемы, если вы не будете осторожны. – MonkeyZeus

ответ

0

Почему вы используете подзапрос? Вы можете сразу выбрать последнюю запись так:

SELECT id_record 
FROM my_table 
WHERE id_user = 6 
ORDER BY id_record DESC 
LIMIT 1; 
+0

Это был мой запрос, прежде чем я опубликовал его, но он был тем же, он работает, но второй, у меня нет условий перед использованием этого кода, я удаляю кеш и все еще не работаю –

+0

, какой тип данных является полями. показать в качестве результата из ** show create table my_table ** –

+0

Тип 'int (11)' и 'date' –