Mysql查询 - 在此查询中加入会导致混淆

时间:2011-12-25 20:35:48

标签: mysql join

我有一个查询返回与特定类别匹配的项目相关的结果...

有3个mysql表格,itemscategoriesitem_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?有谁知道我哪里出错了?

非常感谢任何建议和意见,谢谢!!

1 个答案:

答案 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。