Нумерация страниц, показывающая только первую страницу товаров;после страницы 1 появляется сообщение «Предупреждение: mysqli_query (): пустой запрос» - PullRequest
1 голос
/ 18 июня 2011

Когда я нажимаю на следующую ссылку или любую страницу после страницы 1, я получаю следующую ошибку:

Предупреждение: mysqli_query () [function.mysqli-query]: пустой запрос

Я сейчас пытаюсь просмотреть продукты по group_id, вот мой запрос:

if (isset($_GET['grpid']) && is_numeric($_GET['grpid']) ) {
$grpid = (int) $_GET['grpid'];
if ($grpid > 0) { // Overwrite the query:
$q = "SELECT company.co_id, co_name, category.cat_id, cat_name, prod_name, prod_desc, prod_tag, prod_id, prod_img FROM company, product, category WHERE company.co_id = product.co_id AND category.cat_id = product.cat_id AND product.group_id = $grpid ORDER BY company.co_name ASC, product.prod_name ASC";
}

}

Я думаю, что это может быть связано с этим, потому чтоесли я добавлю в запрос группу таблиц, добавив group.group_id, group_name после предложения SELECT и group.group_id = product_group_id после предложения WHERE, я получу следующую ошибку:

Ошибка:У вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с группой. ГДЕ

Надеюсь, я предоставил достаточно информации, моя база данных состоит из 4 таблиц:

product
  prod_id
  co_id
  cat_id
  grp_id
  prod_name
  prod_tag
  prod_desc
  prod_img
company
  co_id
  co_name
  co_img
grp
  grp_id
  grp_name
category
  cat_id
  cat_name

Обновление

ОК, мой запрос точно такой:

if (isset($_GET['grpid']) && is_numeric($_GET['grpid']) ) {
$grpid = (int) $_GET['grpid'];
if ($grpid > 0) { // Overwrite the query:
$q = "SELECT company.co_id, co_name, grp.grp_id, grp_name, category.cat_id, cat_name, prod_name, prod_desc, prod_tag, prod_id, prod_img FROM company, product, category, grp WHERE company.co_id = product.co_id AND category.cat_id = product.cat_id AND product.grp_id = $grpid ORDER BY company.co_name ASC, product.prod_name ASC LIMIT $start, $display";
}

}

, за которым сразу следует:

$r = mysqli_query($dbc,$q) or die("Error: ".mysqli_error($dbc));

Чтострока, на которую указывает ошибка:

Предупреждение: mysqli_query () [function.mysqli-query]: пустой запрос в

Боюсь, я не знаю, какраспечатайте sql и сразу же верните его обратно?

Если я не использую нумерацию страниц, тогда показываются все предполагаемые продукты;проблема возникает, когда я нахожусь на любой странице, кроме первой.

ОБНОВЛЕНИЕ 2

Если я задаю запрос для выполнения, закомментировав окружающие его теги if, сообщение об ошибке изменится наthis:

Ошибка: у вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'ORDER BY company.co_name ASC, product.prod_name ASC LIMIT 5, 5' в строке 1

Имеет ли это какой-либо пролитьбольше света на эту тему?

ОБНОВЛЕНИЕ 3 - решено!

Простая простая проблема в конце, большое спасибо BugFinder и другим, кто заставил мой мозг должным образом подумать о проблеме.

Проблема заключалась в том, что я не передавал переменную на соответствующие страницы при создании URL-адреса, он читал:

echo '<a href="browse_products.php?&s=' . ($start + $display) . '&p=' . $pages . '">Next</a>';

Но добавив «grpid = 1», чтобы он читался:

echo '<a href="browse_products.php?grpid=1&s=' . ($start + $display) . '&p=' . $pages . '">Next</a>';

Это решило все мои проблемы!

СПАСИБО, ребята, дизайнеру трудно думать о программировании так, как это делают программисты, вы буквально спасли мне дни и дни,отличный материал!

Ответы [ 3 ]

1 голос
/ 18 июня 2011

Попробуйте это:

$q = "SELECT c.co_id, c.co_name, cat.cat_id, cat.cat_name, p.prod_name, p.prod_desc, p.prod_tag, p.prod_id, p.prod_img FROM company AS c, product AS p, category AS cat WHERE c.co_id = p.co_id AND cat.cat_id = p.cat_id AND p.group_id = $grpid ORDER BY c.co_name ASC, p.prod_name ASC";
1 голос
/ 19 июня 2011

Причина, по которой вы получаете предупреждение: mysqli_query () [function.mysqli-query] ошибка в том, что запрос находится в блоке if, а mysql_query() снаружи.

Поэтому я предполагаю, что mysql_query() вызывается независимо от того, определен $q или нет. Поэтому, когда он не определен, вы получаете Warning: mysqli_query() [function.mysqli-query]:

1 голос
/ 18 июня 2011

группа - зарезервированное слово, поэтому будет жаловаться. попробуйте ссылаться на него как group с кавычками.

...