Ошибка в phpmyadmin, хотя работает нормально в сценарии php - PullRequest
3 голосов
/ 30 июля 2010

Хорошо, так что это странно, и я думаю, что в моем запросе sql должна быть проблема, но я не вижу в этом ничего плохого.Происходит то, что у меня есть сценарий, который я выполняю в сценарии php, который извлекает все категории, на которые подписан пользователь, а также сколько других людей зарегистрировалось для этой категории.Когда я запускаю запрос на странице php, он очень медленный, но возвращает результаты.Я хотел посмотреть, что происходит, поэтому я пошел в phpmyadmin, чтобы запустить тот же скрипт, и он очень быстро возвращает счет результатов, но затем выдает следующую ошибку, где результаты обычно отображаются:

#1064 - You have an error in your SQL syntax; check the manual that corresponds
       to your MySQL server version for the right syntax to use near '' at line 1 

Вот запрос:

SELECT t1.category_id, t3.description AS 'Category',
    t1.list_type_id, t2.name, t1.status_id, t2.user_id,
    t2.email, UNIX_TIMESTAMP( t1.record_date ) AS 'RecordDate',
    (
        SELECT COUNT( category_id ) 
        FROM t1_sub
        WHERE t1_sub = t1.job_ctg_id AND
            t1_sub.list_type_id = t1.list_type_id AND
            t1_sub.status_id =44
    ) AS 'MatchingListings'
FROM t1
INNER JOIN t2 ON t2.id_rfp_vendor_data = t1.user_id
INNER JOIN t3 ON t3.type_lookup_id = t1.job_ctg_id
WHERE t1.status_id =43

Я в растерянности.Причина моего вопроса действительно в два раза:

  1. Есть ли что-то не так с моим запросом, который я пропускаю?
  2. Если нет, то ошибка mysql показывает причину, по которой мой запросскрипт работает медленно и что php как-то обойти это?(Хотя это кажется маловероятной возможностью, я просто должен спросить, чтобы быть уверенным)

Спасибо!

Ответы [ 3 ]

1 голос
/ 31 июля 2010

PHPMyAdmin позволяет слегка переписать ваши запросы (например, добавляет предложение LIMIT 0,30 для отображения только первых 30 строк).

Можете ли вы включить журнал запросов и посмотреть, какой запрос фактически выполняется на сервере?

Если нет, попробуйте удалить элементы из запроса, пока он не заработает.Покажите нам этот запрос.Или показать некоторые определения таблиц?

0 голосов
/ 31 июля 2010

Что вам нужно сделать, это удалить phpmyadmin и пообещать больше никогда его не загружать.

Затем запустите командную строку mysql и попробуйте тот же запрос. Это скажет вам, является ли запрос действительно плохим, или phpmyadmin просто отбросил его для извращенного удовольствия его заблуждающихся авторов.

0 голосов
/ 30 июля 2010

Есть ли у вас пробелы в именах таблиц или столбцов? Если это так, заключите их в кавычки:

`table name`
...