当我点击第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
{1}}子句,我收到以下错误:
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'group WHERE
附近使用正确的语法
我希望我已经提供了足够的信息,我的数据库是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并将其直接送回来?
如果我不使用分页,那么所有预期的产品都会显示;当我在第一页以外的任何页面上时,会出现问题。
如果我通过注释掉它周围的if标记来设置要运行的查询,则错误消息会更改为:
错误:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第1行的'ORDER BY company.co_name ASC,product.prod_name ASC LIMIT 5,5'附近使用正确的语法
这是否会对这个问题有所了解?
最后简单的简单问题,非常感谢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>';
它解决了我所有的问题!
谢谢你,设计师很难想象程序员的编程方式,你几乎每天都在拯救我,很棒的东西!
答案 0 :(得分:1)
组是一个保留字,这就是为什么它会抱怨。尝试使用引号将其引用为group
。
答案 1 :(得分:1)
试试这个:
$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";
答案 2 :(得分:1)
您收到警告的原因:mysqli_query()[function.mysqli-query]错误是因为查询位于if
块中且mysql_query()
在外面。
因此我猜测mysql_query()
是否被定义$q
。因此,当未定义时,您将获得Warning: mysqli_query() [function.mysqli-query]: