Home » Database » DB » Bug #1410
DB mssql_field_* functions do not work
Details
| Submitted | 2004-05-14 18:18 UTC |
|---|---|
| From | jbuchbinder at lawbarn dot com |
| Assigned | danielc |
| Status | Bogus |
| Package | DB |
| PHP Version | 4.3.4 |
| OS | Debian GNU/Linunx |
| Roadmaps | (Not assigned) |
Comments
[2004-05-14 18:18 UTC] jbuchbinder at lawbarn dot com
Description:
------------
With the mssql driver, DB dies trying to fetch field names in tableInfo(). My fix (in both places) is to use the mssql_fetch_field() function.
$_f = @mssql_fetch_field($id, $i);
$res[$i]['name'] = $_f->name;
$res[$i]['type'] = $_f->type;
$res[$i]['len'] = $_f->max_length;
Calling $db->tableInfo() using the mssql driver will cause this error if you are using the Sybase interface. It is safer to use mssql_fetch_field.
[2004-05-14 18:51 UTC] jbuchbinder at lawbarn dot com
It doesn't really need a procedural example. The function simply does not work when using the Sybase driver, which I made clear in my initial posting. I also can't give you a tabular example, as it is a simple case of using a function which does not exist in that module. I believe that the only time this happens is when you use php4-sybase to access Microsoft SQL server.
The version of PEAR is also immaterial, as it is a problem in the php4-sybase extension when accessing Microsoft SQL servers. The version I am using is the current Debian testing distribution packaging of php4-pear, which is version 4.3.4-4.
If you still don't believe me that it is immaterial, visit the manual page for that function on php.net (http://www.php.net/manual/en/function.mssql-field-name.php), where the last comment describes the problem in detail.
I quote:
tengel at sonic dot net
07-Oct-2000 07:43
This function isn't supported (PHP 4.0.2) if using
Sybase/FreeTDS to access SQLServer
(linux/solaris/bsd/etc). Instead, use
"mssql_fetch_field()" like so:
$field_name = mssql_fetch_field($query_result, $field_number);
print $field_name->name;
[2004-05-14 19:07 UTC] jbuchbinder at lawbarn dot com
It does not return *anything* if driver 'sybase' is specified. The mssql driver works fine, just not using the function call you used; everything works fine when the mssql driver is patched to use mssql_fetch_field().