Версия для печати темы
Форум веб-мастеров _ Базы данных (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
Автор: sashkovishe 7.8.2007, 20:11
Вот уже более менее понятно... 
Выбор 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]";
Вот уже более менее понятно...

Выбор 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 ()