веб-мастеру блог веб-мастера Статьи Веб-Мастера SEO Tools книги веб-мастеру

IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Php Dbf Mssql, импорт данных из DBF в MSSQL
annablk
сообщение 3.8.2007, 20:47
Сообщение #1


Новичок
**

Группа: Свои
Сообщений: 17
Регистрация: 25.7.2007
Пользователь №: 151



Я пишу:
$finfo = dbase_get_header_info($db)
print_r($finfo)

Выводит результат:

Array ( [0] => Array ( [name] => NST [type] => number [length] => 3 [precision] => 0 [format] => %3s [offset] => 1 ) .....

и др записи такого плана.
Мне же надо только содержимое полей name сравнить с данными в поле таблицы AAA (в MSSQL)

не знаю как написать запрос на MSSQL
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gid
сообщение 3.8.2007, 22:33
Сообщение #2


Администратор форума
*****

Группа: Главные администраторы
Сообщений: 623
Регистрация: 27.11.2006
Из: Россия
Пользователь №: 1



Цитата
не знаю как написать запрос на MSSQL

На сколько я понимаю, запросы, что в MsSQL, что и в MySQL одиаковые - используется один и тот же SQL синтаксис, с очень незначительными различиями.

Запрос будет примерно такой:
Код

SELECT name FROM `имя_таблицы`

где name - имя нужного поля. Если нужно несколько разных полей - перечисляйте через запятую без пробела: name,name_1,name_2...
Код

$query = "SELECT name FROM `имя_таблицы`";
$result = mssql_query($query) or print mysql_error();
while ($row = mssql_fetch_array($result))
{
// здесь что-либо делаем с ассоциированным массивом $row
}


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 4.8.2007, 1:34
Сообщение #3


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Цитата(annablk)
Мне же надо только содержимое полей name сравнить с данными в поле таблицы AAA (в MSSQL) не знаю как написать запрос на MSSQL

Если поле name находится в одной таблице, а другое поле с которым надо сравнивать находится в другой таблице, т.е. используется две таблицы, то можно составить такой запрос:
Код
SELECT table1.name
FROM table1, AAA
WHERE table1.name = AAA.name


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
annablk
сообщение 6.8.2007, 18:31
Сообщение #4


Новичок
**

Группа: Свои
Сообщений: 17
Регистрация: 25.7.2007
Пользователь №: 151



Цитата(sashkovishe @ 4.8.2007, 1:34) *

Если поле name находится в одной таблице, а другое поле с которым надо сравнивать находится в другой таблице, т.е. используется две таблицы, то можно составить такой запрос:
Код
SELECT table1.name
FROM table1, AAA
WHERE table1.name = AAA.name





Ты не понял(а) вопрос мне андо из массива взять данные и забить в базу на mssql. А я не знаю синтаксиса. Перечитай еще мое предыдущее сообщение
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 6.8.2007, 19:13
Сообщение #5


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Цитата(annablk)
Ты не понял(а) вопрос мне андо из массива взять данные и забить в базу на mssql. А я не знаю синтаксиса. Перечитай еще мое предыдущее сообщение

Тогда в следующий раз, задавая вопрос, опеши как можно более подробней саму проблему...


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
annablk
сообщение 7.8.2007, 20:27
Сообщение #6


Новичок
**

Группа: Свои
Сообщений: 17
Регистрация: 25.7.2007
Пользователь №: 151



Цитата(sashkovishe @ 6.8.2007, 19:13) *

Тогда в следующий раз, задавая вопрос, опеши как можно более подробней саму проблему...


Хорошо, буду по конкретней. Значит так, есть база DBF-формата(excel'евская) я вычитываю из неё даные в массив $DBFrec[]:

$rnum = dbase_numrecords($db);
$fnum = dbase_numfields($db);
$DBFrec = array();
for ($i = 1; $i <= $rnum; $i++) {
$DBFrec[] = dbase_get_record($db, $i);
}

$src = array();
for( $i=0; $i<count($DBFrec); $i++ ) {
$src = $DBFrec[$i];
if( !$src['deleted'] ) {
//теперь хочу определенным записям этой таблицы задать id (ниже)
$src[12] = 21;
$src[13] = 29;
$src[14] = 11;
$src[15] = 12;
$src[16] = 13;
$src[17] = 14;
}
// теперь необходимо(А Я НЕ ЗНАЮ КАК!!!) вывести запись из таблицы A в MSSQL в которой кодовое поле = коду(21,29,11,12,13 или 14) из массива $src[]
$SMPrec = array();
$sql = "SELECT g,t,y,u,i,o,,h,k
FROM A,B,C WHERE id=$src[$i]";

$res = mssql_query($sql)
or die("Can't query \"$sql\"\n");
while( $row=mssql_fetch_array($res) ) {
$SMPrec[] = $row;
print_r($row);
}

ОБРАТИТЕ ВНИМАНИЕ НА ЗАПРОС. ОН НЕ РАБОТАЕТ. ПИШЕТ:

Warning: mssql_query() [function.mssql-query]: Query failed in my.php on line 240
Can't query "SELECT ... id=" PHP Notice: Undefined offset: 84 in C:\..\my.php on line 239 PHP Warning: mssql_query() [function.mssql-query]: message: Line 2: Incorrect syntax near '='. (severity 15) in C:\..\my.php on line 240 PHP Warning: mssql_query() [function.mssql-query]: Query failed in C:\..\my.php on line 240
laugh.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 7.8.2007, 21:11
Сообщение #7


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Вот уже более менее понятно... smile.gif

Выбор g,t,y,u,i,o,,h,k, тут нужно указать вместе с прификсом таблицы, т.к. используются несколько таблиц... т.е. <имя таблицы> . <имя столбца>... и $src[$i] надо указывать так ”.$src[$i].”... т.е. например должен быть такой запрос (если g,t,y и т.д. из таблице “A”):
Код

$sql = "SELECT A.g, A.t, A.y, A.u, A.i, A.o, A.h, A.k
FROM A,B,C WHERE id=”.$src[$i].”";

Тогда таблицы B,C писать не нужно и прификс таблиц тоже, здесь они все равно не используются...
Пробуй...
Просто я еще раз говорю с dbf и mssql на php не работал, а по синтаксису, sql запрос вроде верный.


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 7.8.2007, 21:12
Сообщение #8


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Цитата(annablk)
// теперь необходимо(А Я НЕ ЗНАЮ КАК!!!) вывести запись из таблицы A в MSSQL в которой кодовое поле = коду(21,29,11,12,13 или 14) из массива $src[]$SMPrec = array(); $sql = "SELECT g,t,y,u,i,o,,h,k FROM A,B,C WHERE id=$src[$i]";

Вот уже более менее понятно... smile.gif

Выбор g,t,y,u,i,o,,h,k, тут нужно указать вместе с прификсом таблицы, т.к. используются несколько таблиц... т.е. <имя таблицы> . <имя столбца>... и $src[$i] надо указывать так ”.$src[$i].”... т.е. например должен быть такой запрос (если g,t,y и т.д. из таблице “A”):
Код

$sql = "SELECT A.g, A.t, A.y, A.u, A.i, A.o, A.h, A.k
FROM A,B,C WHERE id=”.$src[$i].”";

Тогда таблицы B,C писать не нужно и прификс таблиц тоже, здесь они все равно не используются...
Пробуй...
Просто я еще раз говорю с dbf и mssql на php не работал, а по синтаксису, sql запрос вроде верный.


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
annablk
сообщение 9.8.2007, 16:14
Сообщение #9


Новичок
**

Группа: Свои
Сообщений: 17
Регистрация: 25.7.2007
Пользователь №: 151



СПАСИБО. Обязательно попробую.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
annablk
сообщение 9.8.2007, 18:39
Сообщение #10


Новичок
**

Группа: Свои
Сообщений: 17
Регистрация: 25.7.2007
Пользователь №: 151



Подкорректировала запрос. Запустила на выполнение, а в ответ:



Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281

Что мне теперь с этим делать????
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sashkovishe
сообщение 10.8.2007, 8:08
Сообщение #11


Администратор форума
****

Группа: Администраторы
Сообщений: 397
Регистрация: 3.12.2006
Из: России
Пользователь №: 4



Цитата
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281

Фатальная ошибка... Что-то не верно в строке 281 и возможно так же в другом участке кода.


--------------------
Изображение
Think differently...
ICQ: 6-135-294
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gid
сообщение 11.8.2007, 17:42
Сообщение #12


Администратор форума
*****

Группа: Главные администраторы
Сообщений: 623
Регистрация: 27.11.2006
Из: Россия
Пользователь №: 1



Цитата(annablk @ 9.8.2007, 18:39) *

Подкорректировала запрос. Запустила на выполнение, а в ответ:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3422720 bytes) in C:\..\my.php on line 281

Что мне теперь с этим делать????

Искать утечку памяти! Домой приеду распишу подробнее.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gid
сообщение 12.8.2007, 0:47
Сообщение #13


Администратор форума
*****

Группа: Главные администраторы
Сообщений: 623
Регистрация: 27.11.2006
Из: Россия
Пользователь №: 1



Скорее всего где-либо в скрипте используете массив, в который добавляете все полученные данные, которых очень много... в итоге получается перебор с памятью...


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Быстрый ответОтветить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 8.8.2008, 8:26
^ ВВЕРХ ^

Посетите наши проекты:
примеры программ на delphi скриншоты nfs pro street - carbon360.net