在我的控制器中,我有以下代码:
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;
}
当我回声$query时,我得到
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时,我得到布尔(假)。为什么我的查询没有返回正确的结果?
您的查询在错误的位置添加了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;
}
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();
>分页查询看起来像
$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();