Mysql исключить знак процента во время поиска - повторно используемый скрипт - PullRequest
1 голос
/ 10 апреля 2019

У меня ТАБЛИЦА НДС, где чаны в большинстве случаев имеют имена со знаком процента в конце, например:

------------------------------------------
ID  |  Name                |   Value     |
------------------------------------------
 1  |  VAT 22%             |     22      |
 2  |  VAT 10%             |     10      |
 3  |  VAT 23%             |     23      |
 4  |  VAT 10% IND-50%     |     10      |
------------------------------------------

У меня есть функция, которая возвращает true, если имя уже используетсяво время новой вставки (или изменения строки):

function check_name_exist($id, $name) {

    if ( $id == "" ) {

        $sql = "SELECT Name FROM tax WHERE Name LIKE ?";
        try {
            $rs = $db->prepare($sql);
            $rs->execute(array($name));
            $ris = $rs->fetchAll(PDO::FETCH_ASSOC);
        } catch(PDOException $e) {
            die($e);
        }
    } else {

        $sql = "SELECT Name FROM tax WHERE Name LIKE ? AND ID <> ?";
        try {
            $rs = $db->prepare($sql);
            $rs->execute(array($name, $id));
            $ris = $rs->fetchAll(PDO::FETCH_ASSOC);
        } catch(PDOException $e) {
            die($e);
        }
    }

    if ( count($ris) > 0 )
        return true;

    return false;

}

Проблема возникает, когда я пытаюсь изменить ID = 2. Это говорит мне, что уже есть строка с "НДС 10%".В этом случае идентификатор строки = 4.

Но ЭТО ОШИБКА.

Как я могу изменить скрипт для манипулирования знаком процента, переданным как символ, а не как подстановочный знак?(Мне нужно создать универсальную функцию также для случаев, когда у меня нет знака процента в имени ... в общем)

1 Ответ

0 голосов
/ 10 апреля 2019

Вы можете попробовать экранировать% внутри строки, используя \%

 select Name  from tax  where 'VAT 22% ..' like 'VAT 22\%%';;
...