ID: 40727
User updated by: t_wiedmann at t-online dot de
Reported By: t_wiedmann at t-online dot de
-Status: Feedback
+Status: Open
Bug Type: PDO related
Operating System: window server 2003
PHP Version: 5.2.1
New Comment:
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';
?>
Previous Comments:
------------------------------------------------------------------------
[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;
}
---------------------------------------------
------------------------------------------------------------------------
[2007-03-05 15:46:04] [EMAIL PROTECTED]
Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php
If you can provide more information, feel free to add it
to this bug and change the status back to "Open".
Thank you for your interest in PHP.
------------------------------------------------------------------------
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