PHP 4.0 Bug #7014 Updated: ibase_query (rest of php_interbase.dll?)
| From: | jah@php.net | Date: | Sat, 28 Oct 2000 03:45:00 +0000 |
| Subject: | PHP 4.0 Bug #7014 Updated: ibase_query (rest of php_interbase.dll?) | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-36178@lists.php.net to get a copy of this message | ||
ID: 7014
Updated by: jah
Reported By: jccann@home.com
Status: Feedback
Bug Type: InterBase related
Assigned To:
Comments:
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@php.net) 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.
Previous Comments:
---------------------------------------------------------------------------
[2000-10-04 10:29:37] jccann@home.com
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