ID: 26987
User updated by: aeolianmeson at hotmail dot com
Reported By: aeolianmeson at hotmail dot com
-Status: Feedback
+Status: Open
Bug Type: XML related
Operating System: WinXP
PHP Version: 4.3.4
New Comment:
I'm sorry-- your time is no longer needed. It turns out that it was a
problem relating to a problem I have been having with key-value
associative array pairs.
Thank you for your time,
Dustin
Previous Comments:
------------------------------------------------------------------------
[2004-01-21 05:45:58] [EMAIL PROTECTED]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc.
If possible, make the script source available online and provide
an URL to it here. Try avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2004-01-21 03:41:19] aeolianmeson at hotmail dot com
Description:
------------
Using Expat XML functions.
The character data handler will occasionally return only a first part
of data. It will be immediately called again and return the rest.
This bug only occurred around the 20th and 40th records in a dataset
containing about 80. This occurred with multiple data-files where the
consistency between records has been verified.
Dustin Oprea, PHP-programming extraordinaire
Sample:
<logentry><date>2004.01.21</date><time>01:33:38</time><ip>127.0.0.1</ip><querystring>INSERT
INTO residents VALUES (55, "Chambers", "Harveasha", '0', '0', '',
'216', '')</querystring><position>backup.php/3</position></logentry>
Reproduce code:
---------------
// gets the last label recorded
function getlabel()
{
global $stack;
$tagname = array_pop($stack);
array_push($stack, $tagname);
return $tagname;
}
// character-data handler
function havedata($parser, $data)
{
global $recorddata;
$data = trim($data);
if(strlen($data) == 0)
return;
$recorddata[getlabel()] = $data;
}
Expected result:
----------------
INSERT INTO residents VALUES (54, "Lewis", "Theresa", '0', '0', '',
'215', '')
TAG= position
backup.php/3
TAG= logentry
TAG= date
2004.01.21
TAG= time
01:33:38
TAG= ip
127.0.0.1
TAG= querystring
--> INSERT INTO residents VALUES (55, "Chambers", "Harveasha", '0',
'0', '', '216', '')
TAG= position
backup.php/3
TAG= logentry
TAG= date
2004.01.21
TAG= time
01:33:38
TAG= ip
127.0.0.1
TAG= querystring
INSERT INTO residents VALUES (56, "Pierrie", "Ghezell", '0', '0', '',
'216', '')
TAG= position
Actual result:
--------------
INSERT INTO residents VALUES (54, "Lewis", "Theresa", '0', '0', '',
'215', '')
TAG= position
backup.php/3
TAG= logentry
TAG= date
2004.01.21
TAG= time
01:33:38
TAG= ip
127.0.0.1
TAG= querystring
--> INSERT INTO residen
--> ts VALUES (55, "Chambers", "Harveasha", '0', '0', '', '216', '')
TAG= position
backup.php/3
TAG= logentry
TAG= date
2004.01.21
TAG= time
01:33:38
TAG= ip
127.0.0.1
TAG= querystring
INSERT INTO residents VALUES (56, "Pierrie", "Ghezell", '0', '0', '',
'216', '')
TAG= position
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26987&edit=1