Как сравнить строки?

В базе имеется строки "6х6", "4х4", "8х4" итд

Но некоторые "x' на английском, а некоторые на русском.
Я пишу фильтр, и мне нужно сравнить значения из формы со значением из базы.
В форме все "x" на английском, но они возвращают false с русским "x" при сравнений
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Читайте про нормальные формы баз данных и вам будет значительно проще работать.
Достаточно соблюдать первые 3.

"6x6" в базе быть не должно. Это должны быть 2 разных столбца на "6" и "6".
В вашем за случае - делайте костыль. Если вам нужно только точное совпадение, то используете просто два запроса через OR: WHERE `value`='6x6' OR `value`='6х6'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fernus
@Fernus
Техник - Механик :)
<?php

// Если прям банально...то так тупо можно:


// ВАРИАНТ 1
$str = str_replace('х', 'x', '6x6'); // В первом случае "х" - русская, во втором - английская
// И в запросе:
$sql =  "SELECT * FROM `table` WHERE REPLACE(`field`, 'х', 'x') = '".$str."'"; // В первом случае "х" - русская, во втором - английская

// ВАРИАНТ 2
//В запросе:
$sql =  "SELECT * FROM `table` WHERE REPLACE(`field`, 'х', 'x') = REPLACE('6x6', 'х', 'x')"; // В первом случае "х" - русская, во втором - английская

// P.S.: Не указано какая БД...я отталкивался от MySQL, если что...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы