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
Форумы портала PHP.SU :: Версия для печати :: Php5 и функция MSSQL_fetch_field работает не по спецификации
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Php5 и функция MSSQL_fetch_field работает не по спецификации

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

1. Mixb - 08 Мая, 2007 - 12:34:28 - перейти к сообщению
В описании функции: 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.  
2. valenok - 08 Мая, 2007 - 18:35:15 - перейти к сообщению
Цитата:
Свойство column_source возвращает не имя таблицы а имя столбца = name.
В чем может быть проблема?


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


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


Апропо, используйте теги [php][/php] вместо [code]
3. Mixb - 10 Мая, 2007 - 07:11:44 - перейти к сообщению
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.  

Где запрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. select * from users
  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]

 

Powered by ExBB FM 1.0 RC1