Mysql поиск с PHP - PullRequest
       7

Mysql поиск с PHP

2 голосов
/ 08 декабря 2010

Я использую PHP для поиска в Mysql DB, я повторяю запрос, чтобы я мог видеть, что происходит, и он выглядит так:

select * from `parts` where 'category' like 'at'

Однако ничего не возвращается. Я знаю, что определенно есть столбец с названием «категория» и поле с именем «в». Если я делаю% в%, он просто возвращает каждый результат!

По сути, я хочу получить все записи, где в это значение в столбце категории

Ответы [ 4 ]

2 голосов
/ 08 декабря 2010

выберите * из parts, где 'категория' похожа 'на'

Это не имеет никакого смысла - кавычки вокруг категории объявляют ее буквальным значением, а не именем атрибута.

Я знаю, что определенно есть столбец с названием "категория" и поле с именем "at".

Это сбивает с толку. Термин «столбец» часто заменяет «атрибут» (последний является правильным способом описания структуры данных в реляционной базе данных). Что касается «поля» - вы имеете в виду экземпляр атрибута?

Я думаю, что вы имеете в виду свой код, чтобы сделать это:

select * from parts where category like '%at%'

(backticks являются необязательными для объектов базы данных - т.е. не-литеральных значений - если они не содержат пробелов). Обратите внимание, что использование оператора te like без подстановочных знаков не очень удобно, поэтому если вы ищете значения, соответствующие 'at', а не 'cat' или 'attach' ....

select * from parts where category='at'
1 голос
/ 08 декабря 2010

Вы не можете реально сравнить два поля, используя, как таким образом. Вторым аргументом Like является шаблон, который интерпретируется как регулярное выражение. Вы можете попробовать это:

   select * from parts where category like concat('%', at, '%')

Он будет принимать значение из поля at, добавить знаки%, а затем сравнить поля.

1 голос
/ 08 декабря 2010

Не уверен, что вы подразумеваете под полем под названием "at", но если это значение строки Попробуйте это

select * from `parts` where category='at';
1 голос
/ 08 декабря 2010

Из вашего вопроса не ясно, какие должны быть литералы, а какие должны быть имена полей . Используйте левые апострофы для имен полей . Итак, если вы хотите, чтобы все записи, где поле категории содержит литерал "at" , выполните:

Измените ваши цитаты:

select * from `parts` where `category` like '%at%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...