2013-08-08 4 views
0

У меня строка соединения оракула выше следующего оператора select.Неожиданная ошибка T_STRING в операторе select?

Вот оператор выбора:

$stid = oci_parse($conn1, 'SELECT s.SID, USERNAME AS "User", PROGRAM, MODULE, 
ACTION, LOGON_TIME "Logon", l.* 
FROM V$SESSION s, V$ENQUEUE_LOCK l 
WHERE l.SID = s.SID 
AND l.TYPE = 'CF' 
AND l.ID1 = 0 
AND l.ID2 = 2'); 

oci_execute ($stid); 

Однако, это дает мне ошибку t_string на линии 69. Что является эта строка:

AND l.TYPE = 'CF' 

ли одиночные кавычки проблему?

+0

Да. У вас есть одиночные кавычки внутри ваших одинарные кавычки. Избежать их' l.TYPE = \ „CF \“ 'или использовать двойные кавычки' л .TYPE = "CF" '. –

+0

Цвет вашего кода должен был помочь вам ... –

ответ

3

Вы должны бежать одинарные кавычки:

$stid = oci_parse($conn1, 'SELECT s.SID, USERNAME AS "User", PROGRAM, MODULE, 
ACTION, LOGON_TIME "Logon", l.* 
FROM V$SESSION s, V$ENQUEUE_LOCK l 
WHERE l.SID = s.SID 
AND l.TYPE = \'CF\' 
AND l.ID1 = 0 
AND l.ID2 = 2') 

Прямо сейчас, это разбираемый как:

'SELECT s.SID, USERNAME AS "User", PROGRAM, MODULE, 
ACTION, LOGON_TIME "Logon", l.* 
FROM V$SESSION s, V$ENQUEUE_LOCK l 
WHERE l.SID = s.SID 
AND l.TYPE = ' 

И тогда ваше значение, а затем другую строку, которая является недействительным синтаксис.

+2

Или используйте двойные кавычки' l.TYPE = "CF" '. –

0

Да, одинарные кавычки являются проблемой.

Либо избежать CF кавычки, как этот \'CF\' или использовать "вместо этого.

Смежные вопросы