У меня есть таблица, содержащая множество данных, и один из них – это blob. Я несколько раз должен изучить этот blob для данных с помощью PHP.
Я делаю:
select `desc` from table where `desc` like '%Nam rhoncus%';
это возвращает все данные, но мне это не нужно
Поэтому, если мое описание выглядит так:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. В срочном порядке. Integer sit amet ligula nibh, eu rutrum ante. Mauris cursus, neque eu ultrices pulvinar, purus purus fermentum libero, в элементовом черепахе orci quis lectus. Cras luctus nunc ac tortor laoreet eu iaculis libero consectetur. Maecenas iaculis facilisis libero sodales auctor. Donec gravida interdum vehicleula. Suspendisse vitae massa eget arcu condimentum mattis. Fusce ut ligula ante, nec placerat felis. Maecenas vel nunc nibh, ut luctus urna. Nunc eu lectus a orci iaculis volutpat eget a lorem. Nunc lobortis porttitor time. Nulla ipsum neque, volutpat in viverra sit amet, pharetra non tortor. Phasellus at leo pellentesque nunc ultrices euismod.
- Запрос MySQL для возврата результатов в определенном порядке без заказа
- обновление связанных таблиц в торте
- Выполнение PDO ($ input_parameter) защищает от SQL-инъекций как bindParam / bindValue?
- Автоматическое добавление MySQL между таблицами
- Данные из двух таблиц с одинаковыми именами столбцов
Nulla ullamcorper scelerisque leo, eu, следовательно, risus fringilla id. Nulla facili. Крас сидит, сидя в диам. Duis interdum, sapien quis laoreet bibendum, dui turpis imperdiet magna, id auctor metus velit sollicitudin dolor. Integer blandit, turpis eget interdum commo, ante nisl laoreet dui, ac congue purus dui quis nisl. Etiam blandit черепаха черепах в egestas. Vestibulum euismod orci ac nibh consectetur feugiat. Преданный ac libero quam. Morbi elit nulla, gravida ac blandit eu, bibendum vitae lacus. В Facilisis pellentesque ipsum aliquam auctor. Nam rhoncus, purus eget fringilla ullamcorper, mauris tellus fermentum lectus, ut tempus tellus arcu vel dolor. Suspendisse eros augue, tincidunt sit amet luctus et, auctor id turpis. Предательство, связанное со всеми связями. Proin pulvinar varius erat, id следовательно orci varius sed.
Я ищу: Nam rhoncus
Я хочу получить первое появление, как:
...m auctor. Nam rhoncus, purus eg...
Этот запрос:
SELECT CONCAT( '...', SUBSTR(`description`, LOCATE('Nam rhoncus', `description`) - 10, (LENGTH('Nam rhoncus') + 20)), '...') AS `description` FROM table WHERE `description` LIKE '%Nam rhoncus%';
(Я сломал это так, чтобы было легче читать)
это выведет:
...m auctor. Nam rhoncus, purus eg...
Итак, на вашем PHP вы можете делать:
<?php define('CHAR_LEFT', 10); define('CHAR_RIGHT', 10); // db stuff $search = mysql_real_escape_string($search_var); $query = "SELECT CONCAT('...', SUBSTR(`description`, LOCATE('" . $search . "', `description`) - " . CHAR_LEFT . ", (LENGTH('" . $search . "') + " . (CHAR_LEFT + CHAR_RIGHT) . ")), '...') AS `description` FROM table WHERE `description` LIKE '%" . $search . "%';"; // then your request
ПРИМЕЧАНИЕ. Будьте осторожны, используя обратные слова mysql, поэтому я использую description
вместо этого.
Что-то вроде следующего должно делать то, что вам нужно:
SELECT SUBSTR(description, INSTR(description, 'Nam rhoncus'), LENGTH('Nam rhoncus')) matchStr FROM testTable WHERE description like '%Nam rhoncus%' ;