no real answer, but ...
Larry Garfield wrote:
> Hi all. I've a question regarding PHP's ODBC support.
>
> Here's the situation:
>
> We've a PHP app that uses ODBC to talk to a MS SQL server. Its original home
> was on a server that used the OpenLink ODBC driver, which was a POS, so we
> build an abstraction wrapper around the subset of PHP's ODBC functions that
> we were able to use to make it usable. The internal code for a query is
> built on odbc_exec, odbc_fetch_row, and odbc_result. The main interesting
> part is that the original driver didn't allow for named results, so instead
> we have a small string parser that reads the incoming SQL query, extracts the
> field names, and then uses that to map the numeric result indexes to their
> field name. Kinda clunky, but worked well and used only a minimal ODBC
> footprint.
>
> That worked fine on their old system. However, the client then moved from a
> Windows IIS server to Apache and PHP 5.1.6 on a Linux box, but still talking
> to an MS SQL server on a Windows box. We migrated our test environment to
> the same; Linux/Apache/PHP 5.1 talking to MS SQL on a Windows box over the
> network. Our system uses the unix_ODBC and freetds stack for ODBC
> connectivity, and that works fine.
>
> On the client's system, it works fine except for a few odd cases.
> Specifically, on a few queries that pull data from large text fields the
> query may hang. It seems to reliably hang on certain records only, and only
> after those records have been edited. It seems that when updating a record,
> there is a small chance of something happening to that record and it then not
> working thereafter. A PHP test script run from the command line freezes,
> while the same query run directly on the SQL server returns almost instantly.
...
>
> Now I'll be honest and say I don't quite follow what they're talking about. I
> do not claim to be an ODBC guru, but SQLGetData is a lower-level operation,
> SQL level or C level I don't know, but not something that happens in PHP code
> as far as I am aware. Are they saying there's a bug in PHP's
> odbc_fetch_row()? Or is it a bug in their driver if it can't handle whatever
> it is odbc_fetch_row() does internally?
> Or should we be using odbc_result()
> instead of odbc_fetch_row() if we're dealing with a text field rather than a
> varchar or int?
the way I read it odbc_result() is just an alternative way of doing what you
do with odbc_fetch_row() - I can't see any reason why doing it with
odbc_result()
would suddenly make it work - nonetheless it might be worth trying it just to
rule
it out.
with regard to wanting results returned in a 'named' fashion, does the new
setup still
not allow use of odbc_fetch_array() instead of odbc_fetch_row()? not that I see
any logic
in that solving the issue, again it might be worth trying to see if it does.
I don't know much about MSSQL, or whether 'text' is an actual field type, but
maybe
this function offers a wayout?:
http://php.net/manual/en/function.odbc-binmode.php
are the php versions on the 2 systems you mention exactly the same? (you
mention 5.1 and 5.1.6) this could be a clue to the problem.
lastly I don't suppose that it possible for you to switch to using the MSSQL
specific php extension? [http://php.net/mssql] it might offer a better/faster
connection
to the MSSQL server as well as making the issue go away.
>
> I am confused, and would appreciate assistance in becoming less confused. :-)
>
> Thanks.
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php