2015-05-12 2 views
0

Я знаю, что этот вопрос задан раньше. Но для меня ничего не работает.Php MySQL чувствителен к регистру

У меня есть этот код ниже. То, что я пытаюсь сделать, это поиск в базе данных для таблицы product_description и получить столбец name (эта часть до сих пор работает) сверка .the имя столбца является utf8_general_ci

$SearchWord1 = "Squirl"; 
    $ExistingWord1 = "Banana"; 
    $ReplacerWord1 = "Orange"; 

У меня есть 3 модели:

name: SQUIRL banana pie 
name: Squirl BANANA pie 
name: SQUIRL banana pie 

Я хочу найти Squirl, поиск должен захватить как Squirl, так и SQUIRL. То же самое касается бананов $ExistingWord1, который Banana и также должны искать BANANA

$sql1 = "UPDATE product_description SET name = REPLACE(name, '$ExistingWord1', '$ReplacerWord1') WHERE name LIKE '%$SearchWord1%';"; 

if ($conn->query($sql1) === TRUE) { 
    echo "<h1>Everything worked as planned</h1>"; 
} else { 
    echo "Error updating record: " . $conn->error; 
} 

Я прочитал несколько постов на StackOverflow и ничего не помогало мне до сих пор.

+2

Это поможет, если вы ссылаетесь на те другие сообщения, которые вы упомянули + объясните **, что ** не работает для вас там. –

+0

Посмотрите на поисковый сервер, такой как [Sphinx] (http://sphinxsearch.com/) – marijnz0r

ответ

4

Я не знаю, если это я, но я не уверен, чтобы понять ваш вопрос.

Если все, что вы хотите, обязательно найдете нужные элементы независимо от случая, то вы, вероятно, можете использовать функции MySQL с именем UPPER (...) и LOWER (...), которые позволяют вам конвертировать строка в верхнем или нижнем регистре соответственно

Например:

SELECT name FROM product_description WHERE LOWER(name) = 'squirl'; 

будет соответствовать как Squirl, Squirl или Squirl

+0

Да, но у меня есть как верхний, так и нижний регистр Squirl squirl и SQUIRL Когда я запускаю свой код, он обновляет только Squirl и Banana и игнорирует SQUIRL и BANANA – Innervisions

+0

на самом деле я не понимаю вашу проблему :) Если $ SearchWord1 теперь содержит строчную строку, например«squirl» вместо «Squirl», то вы можете легко использовать приведенный выше код в соответствии с вашими потребностями: «UPDATE product_description SET name = REPLACE (имя, '$ ExistingWord1', '$ ReplacerWord1') ГДЕ НИЖНИЕ (имя) НРАВИТСЯ '$ SearchWord1'; "; – Cr3aHal0

+0

О, я понимаю, что вы сейчас. Я попробую и вернусь к вам – Innervisions

0

в MySQL CHAR, VARCHAR и текст регистронезависимы http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

Убедитесь, что ваш текст не содержит символов с другого языка

+0

Он не использует символы чата с других языков, но он добавляет другие символы lanauge – Innervisions

0

Mysql по умолчанию не чувствителен к регистру.

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

С BINARY a и A разные, что не то, что вы хотите от.

ссылка: this SO post.

будьте осторожны Тхо - в виде таблиц CI может дать вам продублировать результаты, когда продукты/элементы имеют такое же имя, и вы не забираете их ID;)

0

Обычно в тексте MySQL | на основе строки поиски случай нечувствительны.