0

正如您所观察到的,我为这个问题设置了一个模棱两可的标题,因为我没有意识到(由于缺乏深入的知识)这是否是真正的问题。

让我们从一个简短的描述开始:

这是我选择产品的地方:

    $select_prod = "SELECT * FROM product WHERE product_id IN ($some_array)";

之后,这里是我定义分页内容的地方:

    $query_page = mysql_query($select_prod);
    $product_total = mysql_num_rows($query_page);

            $page_rows = 4;
            $last = ceil($product_total/$page_rows);
            if ($page < 1) { 
               $page = 1; 
            } elseif ($page > $last) {
               $page = $last; 
            }
            $limit = 'limit ' .($page - 1) * $page_rows .',' .$page_rows;

我在哪里准备渲染

    $page_query = mysql_query($select_prod . $limit);   
    $results = array();
    while ($array_filter = mysql_fetch_array($page_query)) {
            $results[] = $array_filter;
            }

在此之前,一切都很顺利,我按照我的意愿列出了我的产品,但顺序是随机的。

我试图在第一个查询的末尾包含“ORDER BY price ASC”,如下所示:

    $select_prod = "SELECT * FROM product WHERE product_id IN ($some_array) ORDER BY price ASC";

但由于一个奇怪的原因未能列出出现错误的产品:

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given...

我已经花了几个小时试图找出问题出在哪里,这个论坛似乎是我的最后一次尝试,之后我会让他们随心所欲地订购。

4

1 回答 1

2

您确实需要在执行之前直接打印出完整的查询。试试这个:

$select_prod = "SELECT * FROM product WHERE product_id IN ($some_array) ORDER BY price ASC ";

或者,将limit行更改为在limit.

我认为问题在于之前的空间不足limit。该片段in ()limit 100是有效的 SQL。该片段in () order by price asclimit 100不是有效的 SQL。

于 2013-05-21T15:52:40.633 回答