Скажите, есть ли у меня массив, и я хочу проверить, является ли элемент частью этого массива, я могу пойти и использовать in_array (игла, стог сена), чтобы определить результаты , Я пытаюсь увидеть эквивалент PHP этого для моей цели. Теперь у вас может быть мгновенный ответ для меня, и у вас может возникнуть соблазн сказать «Использовать IN». Да, я могу использовать IN, но это не дает желаемых результатов. Позвольте мне объяснить на примере:PHP, MySQL: mysql замените функцию php in_array
У меня есть столбец «домашние животные» в таблице DB. Для записи это значение: Кошка, собака, верблюд (Да, данные столбца представляют собой значение, разделенное запятой). Учтите, что эта строка имеет идентификатор 1.
Теперь у меня есть форма, где я могу ввести значение в форме ввода и использовать это значение для проверки на значение в БД. Поэтому скажем, что я вводил следующее значение, разделенное запятой, в форме ввода: CAT, camel (да, CAT в верхнем регистре & намеренно, поскольку некоторые пользователи имеют тенденцию вводить его таким образом).
Теперь, когда я вхожу выше данные в формы ввода и представить, что я могу собирать информацию POST'ed и использовать следующий запрос:
$search = $_POST['pets'];
$sql = "SELECT id FROM table WHERE pets IN ('$search') ";
Этот запрос не забирающий меня в строка, которая уже существует в БД (помните запись, которая имеет Кошка, собака, верблюд в качестве значения для столбца домашних животных?). Я пытаюсь заставить записи действовать как супермножество и значения из ввода формы как подмножества. Поэтому в этом случае я ожидаю, что значение id будет отображаться, поскольку значения существуют в столбце, но это не происходит.
Теперь скажите, если я введу только CAT в качестве формы ввода и выполнить поиск, он должен показать мне номер ID 1.
Теперь скажите, если я ввожу только верблюд, cAT в качестве формы ввода и выполнить поиск, он должен показать мне номер ID 1.
Как я могу достичь вышеуказанного?
спасибо.
Благодарим вас за ответ. Я опробовал ваше решение и заметил, что он сработал, но, к сожалению, только частично. Результаты поиска получают мне идентификатор, только если значение $ word является первым значением в столбце.Поэтому, если у меня есть Cat, Dog, Camel и мой запрос, это выглядит так: find_in_set («Cat», домашние животные), только тогда отображается ID. Если я использую find_in_set («Собака», домашние животные), идентификатор не отображается, а mysql неверно возвращает 0 записей. Я рад узнать, что функция find_in_set существует, но не может заставить ее полностью решить проблему. Не могли бы вы помочь? Благодарю. – Devner
-1, это не отвечает на вопрос :-P –
Благодарим вас за ответ. У меня есть пробелы в моих текущих значениях, разделенных запятой, в моей таблице, поэтому, я думаю, мне придется обрезать пространство перед вставкой в БД. Это будет работать для меня. Признайте, что вы нашли время, чтобы ответить на это. Благодарю. – Devner