Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Php5 и функция MSSQL_fetch_field работает не по спецификации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Функция выдает неверные результаты
Mixb
Отправлено: 08 Мая, 2007 - 12:34:28
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2007  
Откуда: Perm


Помог: 0 раз(а)




В описании функции: http://www.php.su/functions/?mssql-fetch-field говорится, что возвращается объект со следующими свойствами:
Цитата:

name - имя столбца. Если столбец является результатом функции, это свойство получает значение computed#N, где #N это серийный номер.
column_source - таблица, из которой был взят столбец.

Данные свойства работают не правильно в части выделенного жирным, а именно:
    Свойство column_source возвращает не имя таблицы а имя столбца = name.

В чем может быть проблема?

Использую PHP 5.1.2 (в составе пакета Denver [Base_PHP5_2006-04-25_a1.3.31_p5.1.2_m4.1.16_pma2.6.1] + php_mssql.dll [версии 5.1.4.4] и MSDE rev.A
Код для проверки:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP  
  3.     $db_server   = 'server';
  4.     $db_user     = 'user';
  5.     $db_password = 'password';
  6.         $db_name     = 'db_name';
  7.         $c = mssql_connect($db_server,$db_user,$db_password);
  8.     mssql_select_db ($db_name,$c);
  9.         $result_query = mssql_query('select * from tablename',$c);
  10.        
  11.     $numfields = mssql_num_fields($result_query);
  12.         for ($i=0; $i < $numfields; $i++)
  13.         {
  14.           $res = '';
  15.           $field = mssql_fetch_field ($result_query, $i);
  16.           $res = $res." name='".$field->name."' number='".(string)($i+1)."' ";
  17.       $res = $res." column_source='".$field->column_source."' ";
  18.           $res = $res." name='".$field->name."' ";
  19.       $res = $res." Length=".mssql_field_length($result_query, $i);
  20.            $res = $res." field_type= ".strtolower(mssql_field_type($result_query, $i));
  21.       echo '<br>'.$res;
  22.         }
  23. ?>
  24.  
 
 Top
valenok
Отправлено: 08 Мая, 2007 - 18:35:15
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
Свойство column_source возвращает не имя таблицы а имя столбца = name.
В чем может быть проблема?


А выше вы привели цитату:
Цитата:
Цитата:
column_source - таблица, из которой был взят столбец.


так что где вопрос я не понял.
Было бы здорово если бы вы показали результат выполнения скрипта.


Апропо, используйте теги [php][/php] вместо [code]


-----
Truly yours, Sasha.
 
My status
 Top
Mixb
Отправлено: 10 Мая, 2007 - 07:11:44
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2007  
Откуда: Perm


Помог: 0 раз(а)




2valenok: перечитайте пост - для облегчения восприятия информации ее немного подправил, результат выполнения скрипта:
PHP:
скопировать код в буфер обмена
  1.  
  2. name='user_id' number='1'  column_source='user_id'  name='user_id'  Length=19 field_type= numeric<br> name='user_password' number='2'  column_source='user_password'  name='user_password'  Length=100 field_type= char<br> name='user_name' number='3'  column_source='users'  name='user_name'  Length=50 field_type= char
  3.  

А исходя из описания функции mssql_fetch_field должно было быть так:
PHP:
скопировать код в буфер обмена
  1.  
  2. name='user_id' number='1'  column_source='users'  name='user_id'  Length=19 field_type= numeric<br> name='user_password' number='2'  column_source='users'  name='user_password'  Length=100 field_type= char<br> name='user_name' number='3'  column_source='users  name='user_name'  Length=50 field_type= char
  3.  

Где запрос:

таблица:
Цитата:

CREATE TABLE [dbo].[Users] (
[user_id] [numeric](18, 0) NOT NULL ,
[user_password] [varchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[user_name] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB