ID:               20641
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Feedback
 Bug Type:         InterBase related
 Operating System: Windows NT / Firebird 1.0
 PHP Version:      4.2.3
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php4-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-latest.zip




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

[2002-11-26 04:38:19] [EMAIL PROTECTED]

Numeric type returns invalid result using
ibase_fetch_row/ibase_fetch_object (Windows NT).

Numbers stored as an InterBase/Firebird numeric/decimal datatype
beyond
the bounds of the PHP integer type (> 2147483647), do not return a
float
type but cause an overflow 

Example:
2303511415 (decimal 10,0) returns -1991455881

PHP/Firebird example script:
$sql = "create table temp (large_number numeric(10,0))";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}
ibase_commit();


$sql = "INSERT INTO temp VALUES (2303511415)";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}

$sql = "SELECT large_number FROM temp WHERE large_number =
2303511415";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}

while ($row = ibase_fetch_row($result)) {
   print($row[0]); 
}

ibase_free_result($result);

$sql = "drop table temp";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}
ibase_commit();

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

[2002-11-26 03:24:19] [EMAIL PROTECTED]

Numeric type returns invalid result using
ibase_fetch_row/ibase_fetch_object (Windows NT).

Numbers stored as an InterBase/Firebird numeric/decimal datatype beyond
the bounds of the PHP integer type (> 2147483647), do not return a
float type but cause an overflow 

Example:
2303511415 (decimal 10,0) returns -1991455881

PHP/Firebird example script:
$sql = "create table temp (large_number numeric(10,0))";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}

$sql = "INSERT INTO temp VALUES (2303511415)";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}

$sql = "SELECT large_number FROM temp WHERE large_number =
2303511415";
$result = ibase_query($sql,connection()); 
if (!$result) {
  exit;
}

while ($row = ibase_fetch_row($result)) {
   print($row[0]); 
}

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


-- 
Edit this bug report at http://bugs.php.net/?id=20641&edit=1

Reply via email to