ID: 25505
Updated by: [EMAIL PROTECTED]
Reported By: michaelc at mikeit dot com dot au
-Status: Open
+Status: Feedback
Bug Type: ODBC related
Operating System: Win32
PHP Version: 4.3.3
New Comment:
Not that I know of. It will require a recompile to insert this change.
Previous Comments:
------------------------------------------------------------------------
[2003-09-16 00:39:12] michaelc at mikeit dot com dot au
Will the windows version heed windows system variables ?
Will try the next time I boot across to win32.
------------------------------------------------------------------------
[2003-09-11 23:30:06] [EMAIL PROTECTED]
Following ODBC spec's ExtendedFetch is required for API conformance
Level2, the minimum PHP supports (I believe). You should probably
contact the MYOB people and inform them to use a fully compliant ODBC
driver, such as the Microsoft one.
That being said you can also just set HAVE_SQL_EXTENDED_FETCH to 0 and
life should be golden for you to bypass this.
------------------------------------------------------------------------
[2003-09-11 22:23:13] [EMAIL PROTECTED]
What would '(gdb) bt' (bt, as in backtrace) output?
That small part of it looks more like the MYOB crashes rather than
PHP..
------------------------------------------------------------------------
[2003-09-11 22:08:00] michaelc at mikeit dot com dot au
Ran GDB under cygwin for the script:
(gdb) run odbc_test.php
Starting program: /cygdrive/c/php4/php.exe odbc_test.php
---Type <return> to continue, or q <return> to quit---
Program received signal SIGSEGV, Segmentation fault.
0x01c7e090 in [EMAIL PROTECTED] ()
------------------------------------------------------------------------
[2003-09-11 21:32:50] michaelc at mikeit dot com dot au
Description:
------------
Trying to write a php gtk frontend to a MYOB (manage your own business)
database.
They provide a suitably crippled ODBC driver, which via Perl, I can
determine that it supports only SQLFetch, rather than PHP's default of
SQLExtendedFetch.
I know how to recompile on linux to change PHP's behavious, but how
would I do this on Win32 ? Is there an .ini flag, or SQL command option
I can set to work around this ?
Is there any chance of getting PHP to implement a flag as to what SQL
fetch command it uses for ODBC ?
Not that that the exec function actually works, and returns data, and
the program works correctly up until I terminate where I get the error
message on exit.
Reproduce code:
---------------
<?php
if (!class_exists('gtk')) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
dl('php_gtk.dll');
else
dl('php_gtk.so');
}
function delete_event()
{
return false;
}
$connectionstring = odbc_connect("MYOB","michaelc","") or
die(odbc_error());
$query = "SELECT * FROM Cards";
$queryexe = odbc_do($connectionstring, $query);
odbc_close($connectionstring);
$window = &new GtkWindow();
$window->connect_object('destroy', array('gtk', 'main_quit'));
$window->connect('delete-event', 'delete_event');
$window->set_title('PHP Rules!');
$window->set_name('MainWindow');
$window->set_usize(150, 200);
$window->show_all();
/* Run the main loop. */
Gtk::main();
?>
Actual result:
--------------
The instruction at "0x01c7e090" referenced memory at "0x01ca5170". The
memory could not be "read".
On exit of program, program runs successful until this point.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=25505&edit=1