X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Ошибка в запросе MySQLсо второго вызова
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 10:55; Ответить: pingvin_hb
Сообщение #1


Почему-то в запросе со второго раза не передаются русские буквы в utf-8 (вместо них и того, что должно быть после них - пусто). Подключаемый файл был с BOM и без BOM, в основном файле если использовать без BOM то возникает ошибка в сессии, а она используется.
При повторном вызове страницы (php, utf-8. запрос MySQL) не сразу, а во втором замечании пишется: Cannot use a scalar value as an array = Не могу использовать скалярную переменную в массиве. Первое замечание: запрос MySQL не валидный (Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in …), а запрос и вправду обрезанный.
(приводить здесь запрос и что с ним связанно – пока долго, да и при первом вызове к нему замечаний нет и всё работает.)
Что посоветуете?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 22.6.2012, 11:33; Ответить: Arks
Сообщение #2


посоветую переставить mysql, или по крайней мере настроить по-другому количество подключений, размеры буфера и т.п.
В остальном посоветовать нечего - берете отладчик и смотрите что не так при повторном запуске. Ошибки особо ни о чем не говорят, кроме каких-то проблем с данными.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 11:37; Ответить: pingvin_hb
Сообщение #3


Во втором вызове и последующих (в отличии от первого) запрос идёт через форму (ACTION) и в параметре полный запрос: вероятно виноваты не русские буквы в запросе, а кавычки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 15:58; Ответить: pingvin_hb
Сообщение #4


Раз кавычки интерпретируются в php и запросе для MySQL по-разному (передача одиночной кавычки в виде html-сущности ´ вызывает ошибку). Тогда как в запрос передать кавычку?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 22.6.2012, 16:21; Ответить: Muxa_hb
Сообщение #5


"INSERT INTO `table` (`name`) VALUES ('\"')";
?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 16:25; Ответить: pingvin_hb
Сообщение #6


Экранирование обратной наклонной чертой в MySQL тоже вызывает ошибку, т.к. наклонная черта тоже передаётся.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 16:38; Ответить: pingvin_hb
Сообщение #7


$rubriki="МОДА и СТИЛЬ";
Т.е. запрос такой: $sql = "select * from `tbl` where `rubriki`=’$rubriki’";
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.6.2012, 16:50; Ответить: alexdrob
Сообщение #8


(Pingvin1 @ 22.6.2012, 13:55) *
Cannot use a scalar value as an array =

Ну так при чём тут MySQL? Напишите код правильно и не будет ошибки. Вы пытаетесь присвоить типа отличному от массива, элемент, и обращаетесь как к массиву.
Напрмиер
[PHP]$sql = "...";
$sql[] = '...';
[/PHP][] - должно добавить новый элемент.
А как можно добавить элемент если там сейчас строка?


(Pingvin1 @ 22.6.2012, 13:55) *
апрос MySQL не валидный (Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

Это не запрос не валидный. Это вы в функцию mysql_num_rows передаёте не mysql ресурс. Так как в переменной может быть false из за не удачного запроса.
Так выведите mysql_error() после query
И посмотрите что там пишется.


(Pingvin1 @ 22.6.2012, 13:55) *
а запрос и вправду обрезанный.

Как вы это определили? Только по тому что вам вывело не весь запрос? И не должно весь выводить, если только вы сами не выводите черех echo например. И брать нужно не из error.


(Pingvin1 @ 22.6.2012, 14:37) *
вероятно виноваты не русские буквы в запросе, а кавычки.

mysql_real_escape_string вам в помощь. Да и именно кавычки " - не вызывают ошибку. ошибка будет если строка запроса быдет что то типа
insert .... ('...'...')

но это и в пхп была бы ошибка, откуда субд знает что вы хотите их этого получить? нужно экранировать
('...\'...')



(Pingvin1 @ 22.6.2012, 18:58) *
Раз кавычки интерпретируются в php и запросе для MySQL по-разному

В каком смысле?


(Pingvin1 @ 22.6.2012, 18:58) *
передача одиночной кавычки в виде html-сущности ´ вызывает ошибку

не вызывает


(Pingvin1 @ 22.6.2012, 19:25) *
Экранирование обратной наклонной чертой в MySQL тоже вызывает ошибку, т.к. наклонная черта тоже передаётся.

Вы что то там накодили не правильно. Не каких ошибок не выхывает.
\' - это экранирование аппострофа. в бд будет просто ' записан
если вам нужно передать аппостроф не экранированный и слешь то экранируете слешь
\\' - в бд будет \' записано.

СУБД не конфликтует с символами. Это вы когда запрос пишите, можете напиать что то типо
Напрмиер у вас имя юзера I'm тогда запрос будет
select * from table where name = '$username'

представлен как
select * from table where name = 'I'm'

Ну и как субд должна его обработать? Она не может расставить 3 аапострофа, так как каждому открывающемуся должен и закрывающийся быть.
экранирование тут
select * from table where name = 'I\'m'

отправит в строку в бд не I\'m а просто I'm
Экранирование нужно для правильного распаривания строки. Субд дудет знать что аппостроф после слеша не нужно воспринимать как служебный символ, а просто как Char
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.6.2012, 16:51; Ответить: alexdrob
Сообщение #9


(Pingvin1 @ 22.6.2012, 19:38) *
Т.е. запрос такой: $sql = "select * from `tbl` where `rubriki`=’$rubriki’";

А вы между символом ’ и ' - не видите разницу?
Это совершенно разные символы,
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 22.6.2012, 20:52; Ответить: pingvin_hb
Сообщение #10


(Muxa_hb @ 22.6.2012, 19:21) *
"INSERT INTO `table` (`name`) VALUES ('\"')";
?

Экранируются только те кавычки, которые являются основными для строки.
(alexdrob @ 22.6.2012, 19:50) *
Ну так при чём тут MySQL? …

MySQL здесь ни причём, только притом, что выводит информацию, что имеется ошибка в запросе (ведь запрос усечён).
(alexdrob @ 22.6.2012, 19:50) *
Это не запрос не валидный…

Раз запрос стал усечённый, он стал не валидный.
(alexdrob @ 22.6.2012, 19:50) *
…Так выведите mysql_error() после query…

У меня при любом запросе эта функция вызывается, так своя функция записана.
(alexdrob @ 22.6.2012, 19:50) *
Как вы это определили?...

По виду ссылки в браузере.
(alexdrob @ 22.6.2012, 19:50) *
Вы что то там находили не правильно. Не каких ошибок не вызывает…

Был вывод автоматически экранированными кавычками через php, а он передал с обратными слешами запрос в MySQL, который указал на ошибку в запросе, если в ручную делать, то ошибок не возникает.
(alexdrob @ 22.6.2012, 19:51) *
А вы между символом ’ и ' - не видите разницу?

Сразу не понял.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Каталог открывается как ошибка 404 в hostcms
0 cheshire 3254 2.7.2018, 11:09
автор: cheshire
Открытая тема (нет новых ответов) Куплю сайт, блог. Тиц от 10, домен второго уровня
0 ehisod 1037 6.3.2014, 22:04
автор: ehisod
Открытая тема (нет новых ответов) Продажа доменов второго уровня
RU, COM, NET, ORG и т.д.
7 chernobog 7797 31.7.2013, 7:35
автор: chernobog
Открытая тема (нет новых ответов) Учусь создавать шаблон для Joomla 2.5 Ошибка в файле index.php
3 Musicathome 6626 26.7.2013, 20:20
автор: -Сабж-
Открытая тема (нет новых ответов) Редирект, установка консультации на сайт и ошибка в коде
2 samgul 4065 27.2.2013, 17:22
автор: -HTMLandPHP-


 



RSS Текстовая версия Сейчас: 29.3.2024, 0:33
Дизайн