Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
Работаю с СУБД Oracle. Для работы с БД использую функцию-обертку, которая выполняет при необходимости oci_connect, выбирает SQL-запрос, выполняет с ним oci_parse, если у запроса есть параметры, выполняет для них oci_bind_by_name, затем выполняет oci_execute и наконец получает данные oci_fetch_array. Но если запрос не возвращает данных (например alter session), то при выполнении oci_fetch_array в логах выдается ошибка о том, что не были привязаны параметры или переменные. Как можно определить, возвращает ли запрос данные (select) или нет и в последнем случае не выполнять oci_fetch_array ? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 14:47 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
is_bool ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 14:52 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
А причем тут is_bool? oci_execute всегда возвращает bool. oci_fetch_array возвращает false при отсутствии данных, но в лог сообщение об ошибке при этом выдается. Мне же нужно вообще не выполнять oci_fetch_array для не select-запросов. Пока что я использую oci_statement_type (сравниваю с SELECT). В моей задаче работает, но это частное решение, т.к. данные могут возвращать и процедуры. Хотелось бы решения общего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:10 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
ну видимо если в тексте запроса нет слова SELECT, то и запрос не SELECT, логично жеж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:27 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
Alibek B.А причем тут is_bool? oci_execute всегда возвращает bool. oci_fetch_array возвращает false при отсутствии данных, но в лог сообщение об ошибке при этом выдается. Мне же нужно вообще не выполнять oci_fetch_array для не select-запросов. Пока что я использую oci_statement_type (сравниваю с SELECT). В моей задаче работает, но это частное решение, т.к. данные могут возвращать и процедуры. Хотелось бы решения общего. общее решение экзекьют вернул тру, значит запрос удался, если ветч арей вернул фолс(а ваще по идее там должно быть поле типо роу_каунт, сколько строк вернуло) - значит запрос не возвращал данные. ещо там должно быть поле типо аффектид роус, если были удаление, изменение данных. а по харошему, ты ж делал запрос..ты ведь знаешь что ты делал. а если ещо доку внимательней почитать, короче поискал для тебя тыц полагаю вернёт пустое значение если запрос ничего не возвращал НАВОДЯЩИЙ ВОПРОС как отличить оператор селект или вызов процедуры которая чтото там вернула ??? не парся скл строку? думаеться мне никак..технически никак, структура ответа сервера идентична а как отличить выборку с нулевым результатом от не выборки??? твой вопрос вцелом похож на - как отличить, почему сервер требует авторизацию, - логин и пароль не верен, или просто пароль стал новый? - а никак, протоколом ХТТП это не предусмотренно, в обоих случаях получишь 401 ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:42 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
Hettну видимо если в тексте запроса нет слова SELECT, то и запрос не SELECT, логично жеж Нет, не логично. Данные может получать хранимая процедура. Запрос может начинаться не со слова SELECT (а например со слова WITH). SQL-запрос вообще может состоять из нескольких запросов, разделенных точкой с запятой. Поэтому ориентироваться на текст запроса нельзя, нужно опрашивать сервер. alex564657498765453 , я хочу свести ошибки в логах к минимуму. Использование oci_fetch_array никаких сбоев не вызывает, только запись в логе. Хочу не вызывать oci_fetch_array в тех случаях, когда этого не требуется, чтобы в логах этих записей не было. Проверки oci_statement_type недостаточно, т.к. CALL и BEGIN могут и возвращать записи, и не возвращать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:48 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453а как отличить выборку с нулевым результатом от не выборки??? В Perl это можно сделать по возвращаемому значению execute, для успешных запросов, возвращающих набор данных, execute всегда возвращает true, даже если выборка пустая. В OCI я такой возможности пока не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 18:04 |
|
||
|
Как определить тип запроса в PHP OCI?
|
|||
|---|---|---|---|
|
#18+
Alibek B.alex564657498765453а как отличить выборку с нулевым результатом от не выборки??? В Perl это можно сделать по возвращаемому значению execute, для успешных запросов, возвращающих набор данных, execute всегда возвращает true, даже если выборка пустая. В OCI я такой возможности пока не нашел. и в перле нет возможности подавлять ошибку ??? в пхп собака перед командой подавляет стандартную обработку ошибки(нестандартная - это твоя собсвенная, где ты сможешь увидеть, что эта ошибка возникла, но она подавлена) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 20:26 |
|
||
|
|

start [/forum/topic.php?fid=23&tid=1462704]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 353ms |

| 0 / 0 |
