Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
Добрый день! Прошу помочь с проблемой работы с oci_bind_by_name в OCI8. В SQL выражении ($query) прикрепляю переменную $username. if (isset($username)){ if ($c = OCILogon("user", "pass", "db")) { if ($checkbox) { $query = 'alter user :username account lock'; } else { $query = 'alter user :username account unlock'; } $s = OCIParse($c, $query); oci_bind_by_name($s, ":username", $username); OCIExecute($s, OCI_DEFAULT); OCILogoff($c); } else { $err = OCIError(); echo "Oracle Connect Error " . $err[text]; } } В результате выдает следующие ошибки: Warning: oci_bind_by_name() [function.oci-bind-by-name]: ORA-01036: неверное имя/номер переменной in Z:\home\localhost\www\test\action_user.php on line 27 Warning: ociexecute() [function.ociexecute]: ORA-01935: missing user or role name in Z:\home\localhost\www\test\action_user.php on line 28 Если вместе ($query = 'alter user :username account lock') поменять на другую выражению например на (SELECT * FROM dba_users where username = :username) то никаких проблем не возникает. Есть какие нибудь варианты решения в данной ситуаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 08:46 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
BIND переменные не могут использоваться вместо названий таблиц, методов, идентификаторов и т.п., т.к. они должны быть известны на момент парсинга. Лепите имя пользователя напрямую в текст запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 12:44 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
anvano, спасибо, если лепит напрямую имя пользователя то пашет без проблем, но мне заранее не известно имя пользователя. Как быть в этом случай? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2013, 13:17 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
:) Код: plsql 1. Только я бы перед этим сначала выполнил ваш Код: plsql 1. и только если пользователь реально есть в базе - то напрямую захардкодил его в запрос, как показано выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 00:07 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
Алсо, переменные биндятся без двоеточия. Т. е. Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2013, 10:20 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
anvano, Не получается. $query = "alter user $username account lock"; Warning: ociexecute() [function.ociexecute]: ORA-00911: invalid character in Z:\home\localhost\www\test\action_user.php on line 28 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2013, 17:52 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
NekZ, Да, может быть, но здесь дела по моему в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2013, 17:54 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
SoRa, Видишь ли... Это не проблема на самом деле. Ты используешь DDL, в котором нельзя биндить переменные, ибо там нет кэширования плана выполнения запроса. В DML же это можно и нужно делать, как и сказал anvano. Попробуй взять имя пользователя в кавычки, а лучше ещё в конце запроса поставить точку с запятой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 04:50 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
NekZ, Не хочет работать есть еще варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 09:30 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
автор: ORA-00911: invalid character перевести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 10:28 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrow, Да. Перевод с описаниям в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:38 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
авторORA-00911: invalid character Cause: identifiers may not start with any ASCII character other than letters and numbers. $#_ are also allowed after the first character. Identifiers enclosed by doublequotes may contain any character other than a doublequote. Alternative quotes (q'#...#') cannot use spaces, tabs, or carriage returns as delimiters. For all other contexts, consult the SQL Language Reference Manual. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:15 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrow, Умник, спасибо за то что скопировал кусок из документацию и вставил тут, но я бы был благодарен тебе если бы ты на двух словах сказал что мне делать что бы заработал мой скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2013, 08:58 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
SoRaanvano, Не получается. $query = "alter user $username account lock"; Warning: ociexecute() [function.ociexecute]: ORA-00911: invalid character in Z:\home\localhost\www\test\action_user.php on line 28 Сделай echo $query; Это выведет тебе реальную команду, которую ты пытаешься выполнить. Запусти то, что вывелось прямо в своей любимой программе по работе с Oracle. Может у тебя $username вообще левый какой-то, или из русских букв. Или ты его не задал и он пуст. И еще - в данном случае не надо ничего биндить дополнительно, если вдруг ты это делаешь, т.к. название пользователя встраивается прямо в запрос напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2013, 14:48 |
|
||
|
Работа с oracle в PHP
|
|||
|---|---|---|---|
|
#18+
anvano, если имя пользователя на прямую тыкать в запросе то работает на 100%. Т.е. $query = "alter user Ivan_I account lock"; работает. Если изменить: $username = "Ivan_I"; echo $username; $query = "alter user $username account lock"; тоже самая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2013, 09:24 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=116&tid=1463965]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 339ms |

| 0 / 0 |
