我有一个查询返回与特定类别匹配的项目相关的结果...
有3个mysql表格,items
,categories
和item_categories
。
我认为这些是自我解释的,但后者是一个链接表,使用id的匹配将任何特定项目链接到任何特定类别。
items表包含一行,id
值为1。
类别表填充了15行,id
值为1-15。
item_categories表包含一行,item_id
值为1,category_id
值为5。
这是php格式的mysql查询:
$catResultQuery = "
SELECT i.id, name, price
FROM items i
INNER JOIN item_categories
ON i.id = item_id
INNER JOIN categories c
ON category_id = c.id
WHERE MATCH (c.id)
AGAINST ('{$_SESSION['input']}' IN BOOLEAN MODE)
ORDER BY name
";
会话变量的值为5,但由于某种原因,此查询显示0结果集。
即使我在php myadmin中运行查询,它也会返回0行。
我很困惑,因为在我的脑海中,所有这一切背后的逻辑似乎相当简单,但出于某种原因,我得到0?有谁知道我哪里出错了?
非常感谢任何建议和意见,谢谢!!
答案 0 :(得分:1)
好的,我现在看到你正在动态构建SQL。如果是这种情况,那么这应该有效:
SELECT i.id, name, price
FROM items i
INNER JOIN item_categories
ON i.id = item_id
INNER JOIN categories c
ON category_id = c.id
WHERE c.id
IN ('{$_SESSION['input']}')
ORDER BY name
确保'{$ _SESSION ['input']}'以逗号分隔,并注意这会带来SQL注入的风险,因为您正在构建SQL。