ID: 40727 Updated by: [EMAIL PROTECTED] Reported By: t_wiedmann at t-online dot de -Status: Open +Status: Closed Bug Type: PDO related Operating System: window server 2003 PHP Version: 5.2.1 New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2007-03-07 08:34:09] t_wiedmann at t-online dot de I build a little sample to show my problem. If Line "(1)" is aktiv anything is ok. If you comment Line "(1)" Apache will crash and restart. You need some Oracle-DB and PDO extension. Hope this helps. Regards Thomas ------------------ <?php // Connection $dbh = new PDO('oci:dbname=databasename;charset=UTF-8','user','pass'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->exec('ALTER SESSION SET NLS_NUMERIC_CHARACTERS=\'.,\''); // Init $stmt = null; $df_nWorkflow_id = 0; $df_nGroup_id = 0; $nStatus = null; // ORACLE PLSQL Package $sQuery = ''; $sQuery .= 'DECLARE '; $sQuery .= ' g_nStatus NUMBER := 0; '; $sQuery .= ' g_nGroup_id NUMBER := NULL; '; $sQuery .= ' g_nWorkflow_id NUMBER := NULL; '; $sQuery .= ' '; $sQuery .= ' PROCEDURE Init '; $sQuery .= ' IS'; $sQuery .= ' BEGIN'; $sQuery .= ' g_nWorkflow_id := 10;'; $sQuery .= ' g_nGroup_id := 20;'; $sQuery .= ' END; '; $sQuery .= ' '; $sQuery .= ' PROCEDURE GetnGroup_id ( p_nGroup_id OUT NUMBER ) '; $sQuery .= ' IS'; $sQuery .= ' BEGIN '; $sQuery .= ' p_nGroup_id := g_nGroup_id;'; $sQuery .= ' END; '; $sQuery .= ' '; $sQuery .= ' PROCEDURE GetnWorkflow_id ( p_nWorkflow_id OUT NUMBER )'; $sQuery .= ' IS'; $sQuery .= ' BEGIN '; $sQuery .= ' p_nWorkflow_id := g_nWorkflow_id;'; $sQuery .= ' END; '; $sQuery .= ' '; $sQuery .= ' PROCEDURE GetnStatus (p_nStatus OUT NUMBER)'; $sQuery .= ' IS'; $sQuery .= ' BEGIN'; $sQuery .= ' p_nStatus := g_nStatus;'; $sQuery .= ' END;'; $sQuery .= ' '; $sQuery .= 'BEGIN '; $sQuery .= ' Init;'; $sQuery .= ' GetnWorkflow_id(:p1);'; $sQuery .= ' GetnGroup_id(:p2);'; // $sQuery .= ' GetnStatus(:p12);'; // (1) comment this line -> Apache crash $sQuery .= 'END; '; $stmt = $dbh->prepare($sQuery); if ($stmt) { $stmt->bindParam(':p1', $df_nWorkflow_id, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':p2', $df_nGroup_id, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':p12', $nStatus, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->execute(); $stmt->closeCursor(); $stmt = null; } // -- values echo '<br>values'; echo '<br>'.$df_nWorkflow_id; echo '<br>'.$df_nGroup_id; echo '<br>'.$nStatus; // -- expected echo '<br>expected'; echo '<br>10'; echo '<br>20'; echo '<br>0'; ?> ------------------------------------------------------------------------ [2007-03-06 12:04:46] [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 the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2007-03-06 12:03:59] t_wiedmann at t-online dot de sorry, but I cannot show you this code, PLSQL, tables.. I think, it's some PDO problem if there is $stmt->bindParam(':p12', $nStatus, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); without any correspondent named parameters (':p12') in $sQuery. Many thanks Thomas ------------------------------------------------------------------------ [2007-03-06 10:45:11] [EMAIL PROTECTED] I don't see any crash there and your code does not work - I don't have your PL/SQL procedures, tables etc. ------------------------------------------------------------------------ [2007-03-06 08:20:58] t_wiedmann at t-online dot de Please look a this sample. It shows some ORACLE/PLSQL access. Maybe I fix the problem. There are two mistakes in the code: (1) without this, Apache will crash (2) maybe some problem, first use of $nStatus without $nStatus = null; Hope this helps, Thomas ------------------------------------------------------- $sQuery = ''; $sQuery = $sQuery . 'BEGIN '; $sQuery = $sQuery . ' myTable.Read(:p1); '; $sQuery = $sQuery . ' myTable.GetnGroup_id(:p2); '; $sQuery = $sQuery . ' myTable.GetnStatus(:p12); '; // (1) I forgot this Line $sQuery = $sQuery . 'END; '; $stmt = $dbh->prepare($sQuery); if ($stmt) { $stmt->bindParam(':p1', $df_nWorkflow_id, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':p2', $df_nGroup_id, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':p12', $nStatus, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); // (2) $nStatus no init to NULL $stmt->execute(); $stmt->closeCursor(); $stmt = null; } --------------------------------------------- ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/40727 -- Edit this bug report at http://bugs.php.net/?id=40727&edit=1