Mysql: Возможные ошибки в запросах "ГДЕ... В", "ЗАКАЗАТЬ..." и "ЛИМИТ"
Как вы заметили, я поставил для этого вопроса двусмысленное название, поскольку просто не понимаю (из-за отсутствия глубоких знаний), является ли это истинной проблемой или нет.
Давайте начнем с краткого описания:
Здесь я выбираю свои продукты:
$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...
Я уже несколько часов пытался выяснить, где может быть проблема, и этот форум, кажется, является последней попыткой для меня, после этого я позволю им сделать заказ, как они захотят.
1 ответ
Вам действительно нужно распечатать ваш полный запрос непосредственно перед выполнением. Попробуйте это вместо этого:
$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.