php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #11490 mssql_connect() broken, mssql_pconnect() fixes it
Submitted: 2001-06-14 11:04 UTC Modified: 2001-12-27 15:09 UTC
From: mlathoud at b2b2c dot ca Assigned:
Status: Closed Package: Sybase-ct (ctlib) related
PHP Version: 4.0.5 OS: Debian GNU/Linux i686
Private report: No CVE-ID: None
 [2001-06-14 11:04 UTC] mlathoud at b2b2c dot ca
I am using Debian unstable, with the following relevant packages:
freetds0 0.51-4
php4 and php4-sybase 4.0.5-2
It's in fact using extension=sybase_ct.so.

When connecting to a MSSQL7 server, if I use mssql_connect(), only the first row of a query can be fetched, then I get "2 is not a valid Sybase result resource".
Simply switching to mssql_pconnect() fixes it (even when used with the standalone php4 binary).

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-06-14 13:03 UTC] sniper@php.net
Add shortest possible example script which can be used
to reproduce this into this report.

 [2001-06-14 14:03 UTC] mlathoud at b2b2c dot ca
Update: with a bigger query like the following (returning 2K+ rows with sqsl based on freetds), I always get
1 is not a valid Sybase-Link resource in <b>test.php</b> on line <b>9</b> when mssql_query()ing, using pconnect() or connect(). Hence, the bug is definately not in freetds, but in sybase_ct.
Side note, I am using php4.0.4pl1 with sybase/freetds (not _ct) on another debian (2.2, apache/php self-compiled)machine and it works just fine.


<?
mssql_pconnect("server","user","pass");
viewdb("SELECT
RegNumber,ISCorporate,Customers.FirstName+Customers.MiddleName+Customers.LastName,Customers.Address,Customers.City,
Customers.State,Customers.ZIP,Customers.HomePhone,Customers.Fax,NickName
from Customers INNER JOIN SalesPersons on Customers.SalesPersonID=Salespersons.SalesPersonID");


function viewdb($query) {
        $r=mssql_query($query);
        if (!$r) {
                print "No results";
                exit;
        };
        print "<p align=center><table border=1>";
        while ($res=mssql_fetch_object($r)) {
                print "<tr>\n";
                if (!isset($fields)) {
                        foreach (array_keys(get_object_vars($res)) as
$n=>$val) {
                                if (!($n%2)) continue;
                                $fields[]=$val;
                        print "<th>$val";
                        };
                        print "<tr>\n";
                };
                foreach ($fields as $field) {
                        print "<td>".$res->$field."\n";
                };
        };
        print "</table>";
};

 [2001-12-18 13:40 UTC] lobbin@php.net
Can this be reproduced with a later version of freetds and/or?

R.
 [2001-12-27 15:09 UTC] mlathoud at b2b2c dot ca
Fixed in latest php code.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Dec 09 17:01:26 2024 UTC