Mysql Query - присоединения, вызывающие у меня замешательство в этом запросе - PullRequest
1 голос
/ 26 декабря 2011

У меня есть запрос, который возвращает результаты, связанные с элементами, которые соответствуют определенной категории ...

Есть 3 таблицы mysql, которые приводят к этому, items, categories и item_categories.

Они, я полагаю, говорят сами за себя, но последняя представляет собой таблицу ссылок, которая связывает любой конкретный элемент с любой конкретной категорией, используя совпадение идентификаторов.

Таблица элементов содержит одну строку со значением id, равным 1.

Таблица категорий заполнена 15 строками со значениями id от 1 до 15.

таблица item_categories содержит одну строку, значение item_id равно 1, а значение category_id равно 5.

Это запрос mysql в форме php:

$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 Ответ

1 голос
/ 26 декабря 2011

Хорошо, теперь я вижу, что вы строите 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 на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...