2016-03-14 3 views
0

Я пытаюсь использовать следующий код для поиска по таблице. Если я не использую переменную, все работает нормально, как только я использую переменную (и поле содержит специальные символы), я нажимаю на такие проблемы, как ничего, или запрос никогда не заканчивается.Проблема с использованием переменной mysql

Я пробовал несколько разных вещей, таких как цитаты и т. Д., Но ничего, что я пробовал, работает, мне нужно убедиться, что это работает независимо от того, какие символы находятся в поле.

Любая помощь будет принята с благодарностью :)

SET @description = 'some string to look for'; 

SELECT * FROM `tbl_master` 
WHERE `description` = @description 
AND `id` > (
    SELECT max(`id`) 
    FROM `tbl_master` 
    WHERE `description` != @description 
    AND `id` < (
     SELECT max(`id`) 
     FROM `tbl_master` 
     WHERE `description` = @description 
    ) 
) 
ORDER BY peak DESC 
LIMIT 1 

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

SELECT * FROM `tbl_master` 
WHERE `description` = 'some string to look for' 
AND `id` > (
    SELECT max(`id`) 
    FROM `tbl_master` 
    WHERE `description` != 'some string to look for' 
    AND `id` < (
     SELECT max(`id`) 
     FROM `tbl_master` 
     WHERE `description` = 'some string to look for' 
    ) 
) 
ORDER BY peak DESC 
LIMIT 1 
+0

Есть на стороне сервера для вашего приложения? Или, если вы пытаетесь это в MySQL, это часть хранимой процедуры или функции? Или это просто сырой запрос? –

+0

Просто необработанный запрос на данный момент, я могу создать хранимый файл позже. – Andy

ответ

0

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

SELECT @description := 'some string to look for', * FROM `tbl_master` 
WHERE `description` = @description 
AND `id` > (
    SELECT max(`id`) 
    FROM `tbl_master` 
    WHERE `description` != @description 
    AND `id` < (
     SELECT max(`id`) 
     FROM `tbl_master` 
     WHERE `description` = @description 
    ) 
) 
ORDER BY peak DESC 
LIMIT 1 
+0

Просто попробовал это, но получил ошибку :( У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с '* FROM 'tbl_master' WHERE' description' = @ описание И 'id'> ( SELEC 'в строке 1 – Andy

Смежные вопросы