1

私のコントローラーには、次のコードがあります。

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

だから私はすべてがその時点まで正しいことを知っています。ただし、$shipping を var_dump すると、bool(false) になります。クエリが正しい結果を返さないのはなぜですか?

4

3 に答える 3

1

クエリが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;
}
于 2013-09-27T05:49:39.977 に答える
0

ページネーションクエリは次のようになります

$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();
于 2013-09-27T06:04:49.397 に答える