[PHP-DEV] PHP 4.0 Bug #7014 Updated: ibase_query (rest of php_interbase.dll?) From: jccann <email protected>
Date: 10/28/00

ID: 7014
User Update by: jccann <email protected>
Status: Feedback
Bug Type: InterBase related
Description: ibase_query (rest of php_interbase.dll?)

Hi. Although I reported that things were working there was one test I did not do and that is a commit. Here is a simple example. When I run this and try to commit, I get an exception in php.exe. I can send other SQL statements, such as an insert and this same code works.

<?php
    print "connect<br>";
    $dbServer = "localhost";
    $dbName = "C:\test.gdb";
    $user = "test";
    $passwd = "test";
    $connect = $dbServer . ":" . $dbName;
    $dbh = ibase_connect( $connect, $user, $passwd );

    print "commit<br>";
    $commit = ibase_prepare( "COMMIT;" );
    ibase_execute( $commit );
    ibase_free_query( $commit );

    print "disconnect<br>";
    ibase_close( $dbh );
?>

Previous Comments:
---------------------------------------------------------------------------

[2000-10-28 15:13:55] jccann <email protected>
Hi.

I tested the 4.0.4-dev release from www.php4win.de.
The bug I reported on NT 4.0 SP5 is fixed!

Thank you!

---------------------------------------------------------------------------

[2000-10-27 23:44:59] jah <email protected>
This is, I hope, fixed (can't test it because I don't have any Windows machine).You should fetch php4.0.4-dev for win32 from http://www.php4win.de.

Or if you would rather stay with a release version, php4.0.3 for win32 from
the same place and contact me (jah <email protected>) directly for an updated version
of php_interbase.dll (thanks to Daniel Beulshausen for compiling it), there was
still one critical InterBase-related bug in 4.0.3.

---------------------------------------------------------------------------

[2000-10-04 10:29:37] jccann <email protected>
Environment:
  Binary distro of PHP 4.0.2
  NT 4.0 (SP5)
  Apache 1.3.2
  Interbase ISQL Version: WI-V6.0.0.627
  InterBase/x86/Windows NT (access method),
  version "WI- V6.0.0.627" on disk structure version 10.0

When I try to fetch a record using ibase_query that is encapsulated into a class, it does not work and I receive:

"Warning: InterBase: invalid transaction handle (expecting explicit transaction start) in c:program filesapache groupapachehtdocsibasetest.php on line 30"

Run the following script to duplicate. Note that if you comment lines 2-19 and 38-48, you will run the fetch without creating the object. In this case (non-object), the fetch works.

BTW - The uncommented (i.e., object version) works great on my Linux box (PHP 4.0.0 + Interbase 6.0).

Thanks.
P.S. If you need interbase testing or test scripts, I would be happy to help. The interbase DLL is *really* shaky in NT for PHP 4.0.2.

--------- IbaseTest.php -----------
<?php
/* Comment from here */
        include_once( 'Audit.php' );
        include_once( 'Form.php' );

class IbaseTest {

        function insert() {
                $sql = "INSERT INTO AUDITS ( AUDIT_ID, INSERT_USER, INSERT_DATE )
                        VALUES ( GEN_ID( AUDIT_GEN, 1 ), 'IbaseTest', 'NOW' );";

                echo "instantiate IbaseTest()<br>";
                $form = new Form();
                echo "insertRecord()<br>";
                $form->insertRecord( $sql );
        }

        function fetch() {
/* to here to make this work (more comments below) */
                $sql = "SELECT MAX(AUDIT_ID) FROM AUDITS;";
                $dbServer = "localhost";
                $passwd = "x8fg73ca";
                $dbName = "C:Program FilesBORLANDInterBasedatamut.gdb";
                $user = "mtnunion";
                $connect = $dbServer . ":" . $dbName;
                echo "connect<br>";
                $dbh = ibase_connect( $connect, $user, $passwd );
                echo "connection handle: $dbh<br>";
                echo "query<br>";
                $sth = ibase_query( $sql, $dbh );
                echo "fetch_row<br>";
                $row = ibase_fetch_row ( $sth );
                echo "free_result<br>";
                ibase_free_result( $sth );
                echo "close<br>";
                ibase_close( $dbh );
                echo "fetched id: $row[0]<br>";
/* comment to end of script */
        }
}

echo "instantiate IbaseTest()<br>";
$test = new IbaseTest();
echo "insert()<br>";
$test->insert();
echo "fetch()<br>";
$test->fetch();
/**/

?>

---------------------------------------------------------------------------

Full Bug description available at: http://bugs.php.net/?id=7014

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: php-dev-unsubscribe <email protected>
For additional commands, e-mail: php-dev-help <email protected>
To contact the list administrators, e-mail: php-list-admin <email protected>