создание, заполнение таблиц из PHP

O3opHuK

Guest
создание, заполнение таблиц из PHP

Подскажите, как из php создавать (заполниять) таблицы.
Получается передать только один запрос :(
Например так всё ок:
PHP:
$dbcreate=@OCIParse($conn,"create table persons(id NUMBER PRIMARY KEY, name char(50), login char(50), pass char (50))");
но, когда так
PHP:
$dbcreate=@OCIParse($conn,"INSERT INTO persons VALUES (1,"Иванов Александр Сергеевич","1","1a"),
(2,"Петров Владимир Петрович","2","2b");");
в MySQL работает, но не в SQL*Plus.
какой должен быть синтаксис ?

-~{}~ 30.06.05 05:58:

И ещё вопрос.
На сколько я поянл для ускорения процедуры загрузки структуры базы данных и самих данных все необходимые для этого SQL-конструкции помещают в один текстовый файл.
Например, файл script.sql.
Для исполнения SQL-инструкций, находящихся в файле script.sql необходимо в среде SQLPlus выполнить команду @[путь]\script.sql.
Можно эту команду передать средствами PHP ??? тогда проблема в вышеизложенной проблеме решилась бы сама собой.
Пробовал так :
PHP:
$dbcreate=@OCIParse($conn,"@C:\WebServers\home\mac.ru\www\script.sql");
$teemp=@OCIExecute($dbcreate);
Не получается =(

Для примера файл script.sql содержит следующее:
[sql]
DROP TABLE persons;
CREATE table persons (
id NUMBER PRIMARY KEY,
name CHAR(50),
login CHAR(50),
pass CHAR(50));

INSERT INTO persons (id, name, login, pass) VALUES (1,'Иванов Александр Сергеевич','1','1a');
INSERT INTO persons (id, name, login, pass) VALUES (2,'Петров Владимир Петрович','2','2b');
INSERT INTO persons (id, name, login, pass) VALUES (3,'Сидоров Генадий Яковлевич','3','3c');
INSERT INTO persons (id, name, login, pass) VALUES (4,'Гусев Сергей Фёдорович','4','4d');


DROP TABLE position;
CREATE table position (
id NUMBER PRIMARY KEY,
name CHAR(50));

INSERT INTO position (id, name) VALUES (1,'Директор');
INSERT INTO position (id, name) VALUES (2,'Завхоз');
INSERT INTO position (id, name) VALUES (3,'Служащий');[/sql]
 

trustno1

Новичок
Re: создание, заполнение таблиц из PHP

Автор оригинала: O3opHuK
но, когда так
PHP:
$dbcreate=@OCIParse($conn,"INSERT INTO persons VALUES (1,"Иванов Александр Сергеевич","1","1a"),
(2,"Петров Владимир Петрович","2","2b");");
в MySQL работает, но не в SQL*Plus.
какой должен быть синтаксис ?
Нужно экранировать кавычки

Автор оригинала: O3opHuK
И ещё вопрос.
На сколько я поянл для ускорения процедуры загрузки структуры базы данных и самих данных все необходимые для этого SQL-конструкции помещают в один текстовый файл.
Например, файл script.sql.
Для исполнения SQL-инструкций, находящихся в файле script.sql необходимо в среде SQLPlus выполнить команду @[путь]\script.sql.
Можно эту команду передать средствами PHP ??? тогда проблема в вышеизложенной проблеме решилась бы сама собой.
Пробовал так :
PHP:
$dbcreate=@OCIParse($conn,"@C:\WebServers\home\mac.ru\www\script.sql");
$teemp=@OCIExecute($dbcreate);
Не получается =(
И не получится :D
считывай с помощью readfile() в переменную, а её уже подставляй в OCIParse.
И вообще я не понимаю, зачем собаки перед OCI-функциями? А ошибки как будешь ловить?
 

O3opHuK

Guest
Извиняюсь с кавычками это я не обратил внимания, в коде у меня так:
PHP:
$dbcreate=@OCIParse($conn,"INSERT INTO persons VALUES (1,'Иванов Александр Сергеевич','1','1a'), 
(2,'Петров Владимир Петрович','2','2b')");
Ошибки ловить =) Просто проверяю
PHP:
if (!$teemp)
{
$error=OCIError($dbcreate);
           echo ("Ошибка при заполнении таблицы (".$error['message'].")");
}
За readfile() отдельное спасибо, обязательно попробую :)
Только всё равно интерестно почему нельзя передать содержимое файла командой @.
 

tony2001

TeaM PHPClub
>Только всё равно интерестно почему нельзя передать содержимое файла командой @.

а кто сказал, что кто-то, кроме SQLPlus, это поддерживает?
это (неудачная) фича конкретного приложения, а не API.
 

O3opHuK

Guest
2tony2001 Спасибо, я понял.
Я думал что функция OCIParse может передать всё SQL*Plus.
 

tony2001

TeaM PHPClub
занятная мысль.
нет, PHP и OCI8 никак не связаны с command line интерфейсом к Ораклу.
 
Сверху