php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #39494 Cannot fetch any row
Submitted: 2006-11-13 12:24 UTC Modified: 2006-11-15 09:42 UTC
From: taylor dot ren at gmail dot com Assigned:
Status: Not a bug Package: InterBase related
PHP Version: 5.2.0 OS: XP
Private report: No CVE-ID: None
 [2006-11-13 12:24 UTC] taylor dot ren at gmail dot com
Description:
------------
I installed PHP with IIS and opened InterBase ext. 

1. IB is OK. I can run separately developed Win32 programs. 
2. PHP is OK. I can load a PHP test file with as simple as phpinfo();
3. ibase_XXXX functions seems OK because there is no error message prompted. 
4. Database/table name OK. 

PHP Interbase script:


Tried in Firefox & IE6. 


Reproduce code:
---------------
<body>
<?php
$connection = ibase_connect('localhost:f:/data/test.ib', 'tr', 'enigma', 'gb_2312');

$sql='select * from t1';
$result=ibase_query($connection, $sql);
while($row=ibase_fetch_object($result))
{
	echo (int)$row->id1, "\n";
}
ibase_free_result($result);
ibase_close($connection);
?>
End of statement. 

</body>

Expected result:
----------------
I am expecting something like: 
1
2


Actual result:
--------------
but only the last HTML statement: 

"End of statement" was displayed. 



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-11-13 12:28 UTC] taylor dot ren at gmail dot com
BTW, the PHPinfo() prompts the below Interbase related info: 

interbase
Firebird/InterBase Support 	dynamic
Compile-time Client Library Version 	Interbase 6
Run-time Client Library Version 	WI-V7.5.1.80

Is it because I am using IB 7.5 but the compile time lib is only IB 6?
 [2006-11-13 12:29 UTC] tony2001@php.net
What do you get with this script?
<?php
$connection = ibase_connect('localhost:f:/data/test.ib', 'tr', 'enigma', 'gb_2312');
var_dump($connection);

$sql='select * from t1';
$result=ibase_query($connection, $sql);
var_dump($result);
var_dump(ibase_fetch_row($result));
var_dump(ibase_errmsg());
?>
 [2006-11-13 12:48 UTC] taylor dot ren at gmail dot com
Hi Tony, 

Thanks for your quick fdbk. 

The output is like this per your suggest script: 

resource(1) of type (Firebird/InterBase link) bool(false) bool(false)

It seems to me the connection to InterBase is fine but the $result fails after call to ibase_query()... as it returns false...
 [2006-11-13 12:59 UTC] tony2001@php.net
>resource(1) of type (Firebird/InterBase link) bool(false) bool(false)
Are you sure? There are 4 (four) var_dump() calls, but you showed 3.
What if you put ibase_errmsg() right after the ibase_query() call?
 [2006-11-13 23:38 UTC] taylor dot ren at gmail dot com
Hi Tony, 

Thanks again. 

Code segment now looks like this: 
================================
<body>
<?php
$connection = ibase_connect('localhost:f:/data/test.ib', 'tr', 'enigma', 'gb_2312');
var_dump($connection);
var_dump($ibase_errmsg);

$sql='select * from t1';
$result=ibase_query($connection, $sql);
var_dump($result);
var_dump(ibase_fetch_row($result));
var_dump($ibase_errmsg);
?>
End of statement. 
===========================

Output now is: 

resource(1) of type (Firebird/InterBase link) NULL bool(false) bool(false) NULL End of statement.

Any further comments? 
</body>
 [2006-11-13 23:48 UTC] tony2001@php.net
Please enable error_reporting(E_ALL) at the top of the script and use _function_ ibase_errmsg(), not variable $ibase_errmsg.
 [2006-11-14 00:10 UTC] taylor dot ren at gmail dot com
Code segment: 
<body>
<?php
error_reporting(E_ALL);

echo "Connection started. \n";
$connection = ibase_connect('localhost:f:/data/test.ib', 'tr', 'enigma', 'gb_2312');
echo "Dumping connection: ", var_dump($connection);
echo "Dumping ibase_errmsg: ",ibase_errmsg();

$sql='select * from t1';
$result=ibase_query($connection, $sql);
echo "Dumping result: ", var_dump($result);
echo "Dumping fetch_row: ", var_dump(ibase_fetch_row($result));
echo "Dumping ibase_errmsg: ", ibase_errmsg();
?>
End of statement. 

</body>

Output: 
Connection started. Dumping connection: resource(1) of type (Firebird/InterBase link) Dumping ibase_errmsg: Dumping result: bool(false) Dumping fetch_row: bool(false) Dumping ibase_errmsg: End of statement.
 [2006-11-15 09:28 UTC] taylor dot ren at gmail dot com
Hi all, 

The problem in this case is identified. In the sample code segment, I found the problem is caused by the fact that "tr" has no "select" right in table "t1". 

It is very strange that ibase_errmsg did not prompt out any errors!

Now I have changed my code to select from another more complex table and got some other error msg. I will try to fix them by myself and then seek help. 

Please close this topic.
 [2006-11-15 09:42 UTC] tony2001@php.net
.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 01:01:28 2024 UTC