Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.09.2013, 09:41
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Бяда в следующем: получаю параметры из jqQuery: Код: php 1. 2. 3. 4. Далее формирую запрос (подключение пропускаю): Код: php 1. 2. 3. 4. 5. 6. 7. 8. В результате параметры :start и :limit имеют значения '0' и '10' (т.е. char), а не ожидаемое 0 и 10 (цифра). С результирующей ошибкой в логах апача: АПАЧ[Thu Sep 19 09:30:18 2013] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '10'' at line 1' in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\test\\get_data.php:72\nStack trace:\n#0 C:\\Program Files\\Apache Group\\Apache2\\htdocs\\test\\get_data.php(72): PDOStatement->execute()\n#1 {main}\n thrown in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\test\\get_data.php on line 72, referer: http://127.0.0.1/test/ Чего я не правильно понял при работе с PDO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 10:15
|
|||
|---|---|---|---|
|
|||
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
AlexSSSS, вообще сомнительно что в месте :sidx и :sord можно использовать параметры. А для :start, :limit наверное надо использовать bindValue(':start', $start, PDO::PARAM_INT) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 10:38
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
[quot ?]AlexSSSS, вообще сомнительно что в месте :sidx и :sord можно использовать параметры. Эти параметры как раз и переварились нормально - они изначально char. ?А для :start, :limit наверное надо использовать bindValue(':start', $start, PDO::PARAM_INT) Попробовал - Код: php 1. 2. результата не дало: та-же самая ошибка. Попробовал "в лоб": Код: php 1. Сработало. Но тут теряется одна из "фишек" PDO про безопасные параметры. Думаю дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 10:48
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 11:29
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
"Каменный цветок" вышел наполовину: параметр start - съеден, limit - по прежнему не переваривается:-( Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. В логе: Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 11:42
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
А если? Код: sql 1. или Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 12:25
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
AlexSSSSНо тут теряется одна из "фишек" PDO про безопасные параметры.Ничего тут не теряется. Точнее, ничего не приобретается. В order by можно указывать либо имена/алиасы полей или выражения на их основе, либо числовые литералы означающие номер поля в секции SELECT. В остальных случаях просто будет сортировка по указанному значению. А в limit можено указывать только числовые литералы, которые можно туда подставить только конкатенацией. Сделаете ее сами или заставите это сделать PDO перед выполнением запроса - роли не играет. Это все равно будет конкатенация со всеми вытекающими последствиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 12:44
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
miksoftНичего тут не теряется. Точнее, ничего не приобретается. В order by можно указывать либо имена/алиасы полей или выражения на их основе, либо числовые литералы означающие номер поля в секции SELECT. В остальных случаях просто будет сортировка по указанному значению. А в limit можено указывать только числовые литералы, которые можно туда подставить только конкатенацией. Сделаете ее сами или заставите это сделать PDO перед выполнением запроса - роли не играет. Это все равно будет конкатенация со всеми вытекающими последствиями. Да это понятно! Именно так и обошел (добавил проверку на то, чтобы в этих параметрах были только цифры разумные, если не цифры - лепит 0 и 10). Просто интересно теперь - а почему это произошло. И не произойдет-ли в случае подобном этому (попробую попозже): Код: php 1. 2. Где значение :PLANS вводит лапками многомудрый юзверь :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 12:53
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
AlexSSSS, С where sum(a.totalrub) у вас точно ничего хорошего не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 12:58
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:18
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Пардон... Исправляюсь: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:20
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
HAVING не в моде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:26
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Забыл про него :-( Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:31
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
AlexSSSS, в секции WHERE фунция DATE только вред приносит, не дает индексу использоваться. Уберите ее. Только дату в константе на забудьте на день увеличить, чтобы логика сохранилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:35
|
|||
|---|---|---|---|
|
|||
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:45
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
как-то так...$STH = $db->prepare($query); $STH->execute(array( $sidx, $sord, (int)$start, (int)$limit )); Спасибо. Сейчас попробую. miksoftAlexSSSS, в секции WHERE фунция DATE только вред приносит, не дает индексу использоваться. Уберите ее. Только дату в константе на забудьте на день увеличить, чтобы логика сохранилась. Спасибо. Только обсуждение данного запроса уводит от темы. Этот запрос привел как пример своих "страхов". Т.е. того, что при написании: Код: plsql 1. и вводе пользователем цифры 100000, при применении параметра в PDO серверу пойдет Код: plsql 1. то есть строка, а не Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:48
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
AlexSSSS, Что там пойдет в PDO - не знаю, не пользовался. Но можно подстраховаться на уровне MySQL: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:52
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
автор Код: php 1. то есть строка, а не Код: php 1. Это равносильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:53
|
|||
|---|---|---|---|
|
|||
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
ORDER BY биндите? Наркоманы, штоле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 13:53
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 14:01
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
Hettавтор Код: php 1. то есть строка, а не Код: php 1. Это равносильноКонкретно с sum() точно не знаю, а в общем случае - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 14:48
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
miksoftHettпропущено... Это равносильноКонкретно с sum() точно не знаю, а в общем случае - нет. В случае сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 14:49
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
авторComparison operations result in a value of 1 (TRUE), 0 (FALSE), or NULL. These operations work for both numbers and strings. Strings are automatically converted to numbers and numbers to strings as necessary. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2013, 14:59
|
|||
|---|---|---|---|
PDO, параметры - на сервер уходит как char - не понимаю |
|||
|
#18+
HettавторStrings are automatically converted to numbers and numbers to strings as necessary.Вот тут-то собака и порылась. MySQL не всегда имеет возможность узнать правильное направление преобразования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&tablet=1&tid=1463447]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 385ms |

| 0 / 0 |
