Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум веб-мастеров _ Базы данных (MySQL, PostgreSQL, ODBC, ...) _ Php Dbf Mssql

Автор: annablk 3.8.2007, 19:47

Я пишу:
$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, 21:33

Цитата
не знаю как написать запрос на 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, 0:34

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

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

Автор: annablk 6.8.2007, 17:31

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

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





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

Автор: sashkovishe 6.8.2007, 18:13

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

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

Автор: annablk 7.8.2007, 19:27

Цитата(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, 20:11

Вот уже более менее понятно... 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 запрос вроде верный.

Автор: sashkovishe 7.8.2007, 20:12

Цитата(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 запрос вроде верный.

Автор: annablk 9.8.2007, 15:14

СПАСИБО. Обязательно попробую.

Автор: annablk 9.8.2007, 17: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

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

Автор: sashkovishe 10.8.2007, 7:08

Цитата
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 и возможно так же в другом участке кода.

Автор: gid 11.8.2007, 16:42

Цитата(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 11.8.2007, 23:47

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

Invision Power Board ()
© Invision Power Services ()