Передача данных из массива PHP в Oracle

Ashotovich

Новичок
Передача данных из массива PHP в Oracle

Всем доброго времени суток.

Помогите, пожалуйста, решить следующую проблему:

При использовании команды
$query = "INSERT INTO EMP VALUES ($_POST['var1'], $_POST['var2'])";
выдается ошибка "Ora_Parse failed (ORA-00936: missing expression -- while processing OCI function OPARSE)". .$_POST['var1'] и пр. - переменные, заранее загуженные в массив PHP $_POST.
При этом команда $query = "INSERT INTO EMP VALUES (12345, 345667)";, то есть не содержащая переменных, проходит нормально и в базу соответствующие данные добавляются.

Ну так у меня в связи с вышесказанным возник вопрос: каким образом передавать данные из массива PHP в процедуру Oracle?

Версия Oracle - 8.1.7 EE. Версия PHP - 4.1.х.

Заранее благодарю за помощь.
 

Ashotovich

Новичок
Мде. Возможно, у меня просто беда с PHP-шным синтаксисом, я в этом деле новичок.
 

Ashotovich

Новичок
Ах да, более полный листинг:

$conn = ora_logon("SCOTT@test", "TIGER") or die;
$cursor = ora_open($conn);
ora_commitoff($conn);
INSERT INTO EMP VALUES ($_POST['var1'], $_POST['var2'])";
ora_parse($cursor, $query) or die;
ora_exec($cursor);


Извините, что все сразу не написал.
 

aloner

Guest
PHP:
echo $query;
print_r($_POST);
что показывает?

Используй OCI8, раз у тебя 8i, php_ora - это для Oracle 7.
 

Ashotovich

Новичок
Спасибо за совет. Кстати, проблема решилась, хотя и немного кривовато - перед функцией INSERT INTO EMP VALUES я определил переменные следующим образом:

$mas1=$_POST['var1'];
$mas2=$_POST['var2'];


а затем уже эти переменные вставил в функцию:

$query = "INSERT INTO EMP VALUES ('$mas1','$mas2')

В общем, криво.

А как узнать, установлены ли у меня библиотеки OCI8?

Кстати, вставка в певоначальный листинг

echo $query;
print_r($_POST);


выдает в строке echo пустые значения (то есть, видимо, переменные не определены), а в строке распечатки переменных - все ок, переменные выдаются корректно.

Заранее благодарю за помощь.
 

fisher

накатила суть
OCI не имеет в делу никакого отношения. в твоем случае интерфейс принимает готовое SQL-предложение, отрендеренное ранее самим PHP - строку $query = "blabla". в ней была ошибка. правильнее
$query = 'INSERT INTO EMP VALUES ('.quotethis($_POST['var1']).', '.quotethis(.$_POST['var2']).')';
где quotethis - функция квочения параметров, про которую конечно же опять все забывают ;)
 
Сверху