2012-04-08 3 views
0

Я так смущен. У меня есть этот код:MySQL с LIMIT работает

function fetchAllArray($assoc = MYSQL_ASSOC) { 
    while($rows=$this->result->fetch_array($assoc)) 
     $arr[]=$rows; 
    return $arr; 

} 

function getGalleries($limit = 0,$orderby = '`created` ASC, sort_id',$ordersort = 'DESC') { 

    $this->query("SELECT * FROM galleries WHERE status=1 ORDER BY ".$orderby." ".$ordersort." ".($limit==0 ? "" : " LIMIT ".$limit).";"); 
    $arr=$this->fetchAllArray(); 

    if(is_array($arr)) 
     return $arr; 
    else 
     return FALSE; 
} 

, когда я называю это нравится:

$this->getGalleries(300); 

это ничего не возвращает!

Когда я проверяю точный запрос в phpmyadmin, я получаю результаты. Когда я удаляю LIMIT из запроса, он работает. Почему LIMIT не работает здесь?

Код хорошо работает в локальном хосте с LIMIT, но не на сервере!

EDIT: Я только что нашел, что это «созданная» строка, которая не работает на сервере! когда я удаляю created из запроса, он работает на сервере, но когда я включаю его, он не работает! как я добавляю это в свой запрос !?

+0

Что точный запрос, который запускается на выполнение и не возвращает ожидаемые результаты? –

+0

вы можете проверить длину $ arr, чтобы узнать, что происходит не так. – sarwar026

+0

МАТЬ БОГА! Я просто обнаружил, что это «созданная» строка, которая не работает на сервере! когда я удаляю 'created' в запросе, он работает на сервере. как добавить это в запрос !? – m3hdi

ответ

1

Возможно, это ошибка в вашем PHP-коде, а не в запросе.

Включите general_log, чтобы увидеть, что на самом деле PHP отправляет

set global general_log = 1; 
+0

Я получаю не ошибку. запрос работает хорошо в localhost !!! – m3hdi

2

Кажется, что ваша функция не получает параметр и принимать аргумент по умолчанию, равна нулю, так что вы не получите никакого результата.

Попробуйте поставить оператор печати перед выполнением запроса, чтобы увидеть, если запрос составлен хорошо или нет ...

+0

Когда я распечатываю команду, я получаю: SELECT * ИЗ галерей ГДЕ СТАТУС = 1 ORDER BY created ASC, sort_id DESC LIMIT 300; – m3hdi

+1

Попробуйте изменить предел таким образом: LIMIT 0,300 – aleroot

+0

Я только что нашел, что LIMIT не проблема, а строка «created»! когда я удаляю его, работает на сервере. кажется, что mysql-версия серверной части не принимает 'created' как имя столбца !? – m3hdi