Are you certain the server is using the same time as you are? What happens if you
SELECT NOW() AS now, ldatetime + INTERVAL 1 HOUR plus_one_hour, ldatetime + INTERVAL 1 HOUR > NOW() as comparison
Also, you should include the field inidcating success/failure and group by this field. Otherwise, if you get a count of 1 or 2, you do not know if one of those is a success.
SELECT ..., success
FROM ...
WHERE ...
GROUP BY success
ORDER BY success DESC
Assuming success = 1 means success and 0 means failure. If you inspect the first row and it contains success = 1, there is at least 1 successful attempt within the last hour, and you should reject the request. If it's not, you are looking at failures, which means checking the counted records. If it's at your threshold of 3, you rejeect the request.