ID:               32013
 Updated by:       [EMAIL PROTECTED]
 Reported By:      mhe at ltcgroup dot de
-Status:           Open
+Status:           Feedback
 Bug Type:         MySQLi related
 Operating System: Debian Woody
 PHP Version:      5.0.3
 Assigned To:      georg
 New Comment:

Please try using this CVS snapshot:

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




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

[2005-02-17 20:17:12] mhe at ltcgroup dot de

perhaps it is a mysql client lib issue, i downt know ..

php side: increasing memory limit isnt a solution
mysql side: alter table isnt a solution

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

[2005-02-17 20:10:27] mhe at ltcgroup dot de

MEDIUMTEXT ~ 2^24 bytes = 16777216 bytes, which php tries to  allocate

php dies, memory limit reached ..

mh, lets play with this. so what happens, if i use TEXT, which seems to
work ..

so i use memory_get_usage() befor and after ->bind_result($ID_ITEM)

before: 48120
after: 113848

dif: 65728

2^16+2 = 65538, which is the size of TEXT .. *ouch :-?

..

what happens, if i bind 2 variables to a TEXT ..

"select DESCRIPTION as DD, DESCRIPTION as DD2, from tt"

$stmt->bind_result($ID_ITEM, $IDD);

before: 48424
after: 179640

dif: (179640 - 48424) / 2 = 65608 ~ 2 * 2 ^16

! notice: table was empty

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

[2005-02-17 19:32:12] mhe at ltcgroup dot de

Description:
------------
submit a prepared query to mysqli ext using method prepare().

if i use bind_result to bind a column to a variable php crashes with
fatal error: memory limit, if the column in database is mediumtext. if
you alter this to text, everything works fine.

using mysqld 4.1.10

--output: php5 -v
micronium:~/phpn# php5 -v
PHP 5.0.3-1.dotdeb.0 (cli) (built: Dec 16 2004 13:08:20)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies

-- mysql:
CREATE TABLE tt (
  ID_ITEM INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  TITLE VARCHAR(255) NULL,
  DESCRIPTION MEDIUMTEXT NULL,
  PRIMARY KEY(ID_ITEM)
);

-- php:
$query = "
 select
  DESCRIPTION
 from
  tt
";
$stmt = $db->prepare($query);
$stmt->execute();

$stmt->bind_result($DESCRIPTION); //-- this is line 63

-- output:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to
allocate 16777216 bytes) in /root/phpn/run.php on line 63
Allowed memory size of 8388608 bytes exhausted (tried to allocate 256
bytes)

-- mysql:

ALTER TABLE `tt` CHANGE `DESCRIPTION` `DESCRIPTION` TEXT

-- php:
$query = "
 select
  DESCRIPTION
 from
  tt
";
$stmt = $db->prepare($query);
$stmt->execute();

$stmt->bind_result($ID_ITEM); //-- this is line 63

-- output:
:::  everything is ok, no crahs, can go on


Reproduce code:
---------------
try to bind a MEDIUM text column to a variable, and php will crash ..




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


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

Reply via email to