Запрос страницы Pagination PHP не работает

В моем контроллере у меня есть следующий код:

if($action=='shipping_list'){ 
 $numrows=inquire_row(); //Get number of rows in query
 $pages= new Paginator('10', 'p'); //create object
 $pages->set_total($numrows);
 $shipping=shipping_list(); //Goes to model
 include('shipping_list.php');
}

В моей модели я эти коды:

function shipping_list(){
 global $MEMS;
 global $pages;
 $query = "SELECT * FROM Inventory" .$pages->get_limit()
 ."WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' '
 ORDER BY Wafer ASC, RC ASC";
 echo $query;
 $shipping = $MEMS -> query($query);
 var_dump($shipping);
 return $shipping;
}

Когда я эхо-запрос $, я получаю

SELECT * FROM Inventory LIMIT 0, 20 WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' ' ORDER BY Wafer ASC, RC ASC

Поэтому я знаю, что все правильно. Однако, когда я var_dump $ shipping, я получаю bool (false). Почему мой запрос не возвращает правильные результаты?

3 ответа

Ваш запрос добавляет тег LIMIT в неправильное место.

Тег LIMIT должен идти в конце.

Итак, ваш запрос должен быть:

SELECT * FROM Inventory WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' ' ORDER BY Wafer ASC, RC ASC LIMIT 0, 20

Измените SQL из модели следующим образом:

function shipping_list(){
 global $MEMS;
 global $pages;
 $query = "SELECT * FROM Inventory 
 WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' '
 ORDER BY Wafer ASC, RC ASC " .$pages->get_limit(); // ADD LIMIT tag at the end.
 echo $query;
 $shipping = $MEMS -> query($query);
 var_dump($shipping);
 return $shipping;
}


Запрос на разбиение на страницы выглядит

$sql= "SELECT * FROM $tableName LIMIT $start, $limit";

Вам нужно будет указать $start и $limit

Пусть на первой странице 20 результатов.

$sql= "SELECT * FROM $tableName LIMIT 0, 20";

в вашем случае это изменится на что-то подобное

$query = "SELECT * FROM Inventory WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' ' ORDER BY Wafer ASC, RC ASC ".$pages->get_limit();


LIMIT должен быть в конце запроса

$query = "SELECT * FROM Inventory WHERE Yield >=320 AND (Q = 'Pass' OR Q='No Q') AND shipdate = ' ' ORDER BY Wafer ASC, RC ASC ".$pages->get_limit();

licensed under cc by-sa 3.0 with attribution.