Intereting Posts
Неустранимая ошибка: вызов неопределенной функции tally () Laravel – CircleCI – сбой на phpunit Мой экспорт csv, отображающий html, как избавиться? Что называется сессионным хранилищем? preg_match, чтобы найти слово, которое заканчивается определенным символом «Вертикальное» соответствие регулярных выражений в ASCII «изображении» Порядок предложения LIKE в запросе, когда вы хотите использовать несколько терминов CodeIgniter | .htaccess удаление index.php из url Маршрутизация в codeigniter не работает с неанглийскими символами PHP Прохождение через путаницу 500 – внутренняя ошибка сервера? session_regenerate_id (true) недействительный сеанс для ajax-запросов или быстрого обновления Как получить широту и долготу пользователя по IP-адресу или точному местоположению Обновить как вставить Вызов функции-члена getSession () для не-объекта в vendor / behat / mink-extension / src / Behat / MinkExtension / Context / RawMinkContext.php в строке 81

Как применить шаблон в instr () в MySQL?

Использование подстановочного знака, чтобы все записи были сопоставлены.

Мой код:

if(empty($tag)) { $tag="%"; } mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error()); 

Но он возвращает нулевой результат. Даже если

  if(empty($tag)) { $tag="*"; } 

Он по-прежнему возвращает нулевой результат. Как решить эту проблему?

    INSTR не поддерживает подстановочные знаки.

    Если вы хотите использовать подстановочные знаки в запросе MySQL, вам придется использовать функцию, которая его поддерживает, например LIKE или REGEXP , то есть:

     mysql_query("select * from mytable where tag LIKE '%$tag%'") 

    Вышеуказанный запрос будет работать для любого значения $tag . Пустое значение (пустая строка) вернет все записи. Убедитесь, что вы правильно дезинфицируете значение вашего $tag .

    Прежде всего, instr (и его locate ) не распознают подстановочные знаки или любые другие специальные литералы, содержащие только выражения. Обычный способ справиться с этим – изменить SQL соответственно:

     if (empty($tag)) $whereclause = ""; // match all records else $whereclause = "where instr(tag, '$tag') > 0"; mysql_query("select * from mytable $whereclause") or die(mysql_error());