2015-04-25 3 views
0

Я пытаюсь получить результаты из таблицы базы данных mssql, используя PDO в PHP, но это не возвращает никаких результатов. Тем не менее, я могу подсчитать строки таблицы - любой совет?Почему этот запрос sqlrv PHP/PDO не возвращает результаты?

//this one working fine return 500 recrod in table 
    $sql = "SELECT count(*) FROM Content"; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(); 
    $num_rows = $stmt->fetchColumn(); 

    //this one not returning anything 
    $sql = " SELECT c.* FROM (
      SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowID,* FROM Content 
      ) AS c 
     WHERE c.ID > :row_start AND c.ID <= :row_end 
     "; 
     $stmt = $conn->prepare($sql); 
     $stmt->bindParam(':row_start', $row_start); 
     $stmt->bindParam(':row_end', $row_end); 
     $stmt->execute(); 

    $allsuck = $stmt->fetchAll(PDO::FETCH_COLUMN); 
    print_r($allsuck); 

Информация о таблице:

Array 
(
    [0] => ID 
    [1] => Title 
    [2] => Fulldata 
    [3] => description 
    [4] => Catid 
    [5] => language 
    [6] => Created 
    [7] => Userid 
    [8] => MetaKey 
    [9] => Thumbnail 
    [10] => Thumbnail_desc 
    [11] => Hits 
    [12] => Active 
    [13] => ModifiedDate 
    [14] => ModifiedBy 
    [15] => Fb_image 
    [16] => important 
    [17] => hashTags 
) 
+1

Все нижестоящие сообщения с изображением слова «plz» с плаката на 8,5 тыс. Получают нисходящее движение _immediately_. Urgh! – halfer

+0

В чем смысл такого подзапроса? – Mike

+1

@Mike У меня есть таблица с записью более 16 тыс. Я пытаюсь использовать систему разбиения на страницы, эта таблица предназначена для тестирования, считается, что она работает нормально, но отображает записи, возвращающие пустой массив. – Jack

ответ

2

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

SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowID,* 
FROM Content 
WHERE Content.ID > :row_start 
AND Content.ID <= :row_end 
2
SELECT * FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowID,* 
    FROM Content 
) data 
WHERE data.RowID > :row_start 
    AND data.RowID <= :row_end 

Вы фильтруете не тот столбец. Id ничего не сделает для вас (в противном случае зачем беспокоиться о ROW_NUMBER()?). Фильтр должен быть на RowId

+0

'ROW_NUMBER()' лучше использовать в pagination case –

+0

@JackKFouani, но OP не использует Row_number правильно ... –

+0

проголосуйте, ваше решение тоже хорошо. это может помочь кому-то еще –

Смежные вопросы