ID: 36144 Updated by: [EMAIL PROTECTED] Reported By: php at kanariepiet dot com -Status: Open +Status: Bogus Bug Type: MySQL related Operating System: Linux PHP Version: 5.1.2 New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Due to the volume of reports we can not explain in detail here why your report is not a bug. The support channels will be able to provide an explanation for you. Thank you for your interest in PHP. RTFM. Previous Comments: ------------------------------------------------------------------------ [2006-01-24 15:30:13] php at kanariepiet dot com Description: ------------ Assume you have a webserver serving two PHP scripts. Both PHP scripts use persistent MySQL database connections. Script one uses normal mysql_query calls, script two uses mysql_unbuffered_query calls. Also, script one is doing additional mysql_query calls while retrieving the records of the first mysql_query (yes, an sql join would be better). When script two (the one with mysql_unbuffered_query) finishes, and script one reuses the persistent database connection of script two, the resource identifier in script one gets lost after the first loop, resulting in only one returned row. get_resource_type($res) should return 'mysql result', but will return 'Unknown' Reproduce code: --------------- Script1.html: $db = mysql_pconnect ('host', 'user', 'pass'); print ('We are using MySQL thread: '. mysql_thread_id() .'<br />'); $res = mysql_query ("SELECT * FROM temp.documents"); // table with 1200 records print ('mysql_num_rows() returned '. mysql_num_rows($res) .'<br />'); while ($row = mysql_fetch_assoc ($res)) { $res2 = mysql_query ("SELECT * FROM temp.attachments WHERE document = ". $row['id']); while ($row2 = mysql_fetch_assoc ($res2)) $row['attachments'][] = $row2; $documents[] = $row; } print ('number of documents: '. count ($documents)); Script2.html: $db = mysql_pconnect ('host', 'user', 'pass'); print ('We are using MySQL thread: '. mysql_thread_id() .'<br />'); $res = mysql_unbuffered_query ("SELECT * FROM temp.documents"); while ($row = mysql_fetch_assoc ($res)) { } Expected result: ---------------- Open script2.html and note the thread id. Keep opening script1.html until the thread id is the same as the one script2 used. You should see this: (script2.html) We are using MySQL thread: 1439 (script1.html) We are using MySQL thread: 1439 mysql_num_rows() returned 1200 number of documents: 1200 Actual result: -------------- However, the output will be: (script2.html) We are using MySQL thread: 1439 (script1.html) We are using MySQL thread: 1439 mysql_num_rows() returned 1200 number of documents: 1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36144&edit=1
