powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / не отрабатывает запрос
16 сообщений из 16, страница 1 из 1
не отрабатывает запрос
    #38508382
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
возможно туплю, но:
есть база, в полях присутствуют служебные символы, есть запрос:
SELECT * FROM `".$basecurrent."`.`".$baseprefix."books` WHERE LCASE(`authors`) LIKE LCASE('%".mb_strtolower(mysql_real_escape_string($_SESSION['author']),'utf-8')."%')"
на пыхе уже тупо продублировал lowercase

если в поле authors в тексте присутствует ', то запрос не работает и выдает 0 строк

в чем косяк?
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508390
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том, что кто-то не читает справку, раздел "Строковые литералы".
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508398
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaВ том, что кто-то не читает справку, раздел "Строковые литералы".
<Для символа "'" внутри строки, заключенной в двойные кавычки, не требуется специальной обработки>
и как мне рассматривать запрос исходя из вызова из пыха?
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508437
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexgluker,

Сначала соберите весь запрос, потом (до отправки его в MySQL) выведите его для отладки.
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508728
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делал, все корректно, без ошибок
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508734
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexgluker,

тогда описывайте задачу подробнее, в т.ч. покажите данные, которые не обнаруживает запрос и сам запрос.
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508738
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запись в поле authors Кетлин О'Брайен

mysql_query("SELECT * FROM `".$basecurrent."`.`".$baseprefix."books` WHERE LCASE(`authors`) LIKE LCASE('%".mb_strtolower(($_SESSION['author']),'utf-8')."%')") or die(mysql_error());

ошибки не выдается, mysql_num_rows возвращает 0 строк
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508747
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftalexgluker,

Сначала соберите весь запрос, потом (до отправки его в MySQL) выведите его для отладки.
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38508789
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexglukerзапись в поле authors Кетлин О'Брайен

mysql_query("SELECT * FROM `".$basecurrent."`.`".$baseprefix."books` WHERE LCASE(`authors`) LIKE LCASE('%".mb_strtolower(($_SESSION['author']),'utf-8')."%')") or die(mysql_error());

ошибки не выдается, mysql_num_rows возвращает 0 строк

А куда mysql_real_escape_string делась? Теперь то у Вас эта кавычка не экранирована.

На практике лучше не писать такую кашу в mysql_query, а записывать результат выполнения этой "каши" в переменную (например $query) и уже её передавать в функцию... Об этом и говорили, сначала запрос полностью собрать... а потом написать echo $query; или как там Ваша переменная зваться будет, и посмотреть что там получилось...
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509595
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
итак, еще раз
база innodb utf8, в базе единственная запись с указанным автором
в пыхе кодировка mb_internal_encoding('UTF-8')
запрос SELECT * FROM `".$basecurrent."`.`".$baseprefix."books` WHERE LCASE(`authors`) LIKE LCASE('%".mysql_real_escape_string($_SESSION['author'])."%')
в sql запрос попадает строка
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О'Брайен%')


возвращает 0 строк
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509634
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexglukerв sql запрос попадает строка
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О'Брайен%')


возвращает 0 строкЭтот запрос вообще выполниться не должен, в нем синтаксическая ошибка.
Должно быть так:
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509639
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftalexglukerв sql запрос попадает строка
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О'Брайен%')


возвращает 0 строкЭтот запрос вообще выполниться не должен, в нем синтаксическая ошибка.
Должно быть так:
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')



логически это верно, но запрос то отрабатывает, только возвращает пустоту, страница не падает и прогружаеца полностью, or die(mysql_error()) присутствует
конструкций try нет, почему тогда mysql_query не вываливаеца по ошибке
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509655
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexglukerпочему тогда mysql_query не вываливаеца по ошибкеОткуда ж нам знать? Мы видим только то, что Вы нам показываете, не более того.
Возможно, что кавычку Вы таки где-то экранируете, а нам показываете без экранирования.
А записи не выводятся еще по какой-то причине, например, из-за кодировки.
Покажите вывод такого запроса:
Код: sql
1.
2.
3.
SELECT `authors`, LCASE(`authors`), '%Кетлин О\'Брайен%', LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')
FROM `library`.`lib1_books`
WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509670
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftalexglukerпочему тогда mysql_query не вываливаеца по ошибкеОткуда ж нам знать? Мы видим только то, что Вы нам показываете, не более того.
Возможно, что кавычку Вы таки где-то экранируете, а нам показываете без экранирования.
А записи не выводятся еще по какой-то причине, например, из-за кодировки.
Покажите вывод такого запроса:
Код: sql
1.
2.
3.
SELECT `authors`, LCASE(`authors`), '%Кетлин О\'Брайен%', LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')
FROM `library`.`lib1_books`
WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')



работает (
глобальная обработка всех входящих пост гет запросов присутствует, в том числе и mysql_real_escape_string
ушел смотреть кто экранирует 2 и более раз
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509693
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexglukermiksoftпропущено...
Этот запрос вообще выполниться не должен, в нем синтаксическая ошибка.
Должно быть так:
Код: sql
1.
SELECT * FROM `library`.`lib1_books` WHERE LCASE(`authors`) LIKE LCASE('%Кетлин О\'Брайен%')



логически это верно, но запрос то отрабатывает, только возвращает пустоту, страница не падает и прогружаеца полностью, or die(mysql_error()) присутствует
конструкций try нет, почему тогда mysql_query не вываливаеца по ошибке

Возможные варианты:
1. "в sql запрос попадает строка" - реально туда попадает нечто другое, а то что Вы нам написали - это то, что Вы подумали, туда должно попасть.
2. Неверно установлена кодировка php->mysql->php. Ну то есть php отправляет строку в utf, а mysql принимает cp1251 или ещё в какой. Решается настройкой сервера или просто выполнением запроса SET NAMES 'utf8' в первом запросе из скрипта к базе (хотя странно, так как одинарная кавычка скорее всего оставалась бы одинарной кавычкой в любом случае)
3. То, что Вы представляете как одинарная кавычка реально таковой не является, а есть неким похожим символом на данный. Ну там какая-нить косая кавычка или типа того.

Это то, что в голову пришло.

P.S. LCASE('%Кетлин О\'Брайен%') а тут LCASE не лишний? Насколько я помню LIKE проводит регистронезависимую проверку... или я ошибаюсь?
...
Рейтинг: 0 / 0
не отрабатывает запрос
    #38509713
alexgluker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подкорректировал предобработку пост гет, заработало, всем спасибо
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / не отрабатывает запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]