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

Reply via email to