View Full Version : Frage zum Programmaufruf von PHP aus
Ja, aber diese PHP Data Objects kannte ich vorher nicht und dafür mussten wir auch erst was einspielen.
Vielen Dank für eure Hilfe.
Die Lösung für mein Problem findet man hier: PHP: PDO - Manual (http://de.php.net/pdo) .
Hallo David,
ich habe nun das gleiche Problem und kann als PHP-Neuling
leider nichts mit "PDO" anfangen.
Kannst du mir zeigen, wie der PHP-Code dann aussehen muss.
Danke im Voraus !
Peet
Hallo David,
auch ich habe das gleiche Problem. Die Ausführung funktioniert, aber ich bekomme keinen Parameter von meinem aufgerufenem Programm auf der AS/400 zurück.
Hier mein Testprogramm:
try {
$db = new PDO('odbc:AS400', conn_user, conn_password);
} catch (Exception $e) {
echo "Fehler beim Connect :" . $e->getMessage();
}
$parm1 = "'A'";
$stmt = $db->prepare("CALL Bibliothek.Testprogramm($parm1)");
$stmt->bindParam(1, $parm1, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT, 4000);
if(isset($_POST['mail_abschicken']) && $_POST['mail_abschicken'] == 'Befehl auf der AS/400 aufrufen') {
$stmt->execute();
echo '<form>';
echo 'Parm1 :' . $parm1;
echo '</form>';
}
Der Parameter $parm1 bleibt auf A, obwohl das Programm auf der AS/400 ein B zurückgeben soll.
Als ODBC-Treiber verwende ich den normalen iSeries Access ODBC Treiber.
Du schriebst, dass ihr erst etwas einspielen musstet. Was war das denn?
Bei mir ist die ganze PDO-Geschichte offenbar in meiner PHP-Installation schon dabei (PHP-Vers. 5.3.0).
Auch ich arbeite mich in die mit PHP und As/400 Zugriffe ein.
Danke für Deine Antwort.
Das normale CALL-Kommando kann keine Parameter zurückgeben.
Wenn du die ODBC-Schnittstelle verwenden willst, musst du eine externe SQL-Procedure definieren (siehe ganz oben bei Create Pocedure) und diese dann aufrufen.
Für PHP gibts aber eine AS/400-AddOn-Lib in der auch Programmaufrufe mit Parametern möglich sein sollen.
Hallo zusammen,
mit PDO und ODBC kenne ich micht nicht aus.
Aber mit der i5_Toolkit Library geht es so:
function load_the_RPG_program_as_test($conn )
{
//*********************************************
// Anmeldung vom Programm vorbereiten
//*********************************************
$desc=array(
array("name"=>"p_delay", "io"=>I5_INOUT, "type" => I5_TYPE_CHAR, "length"=>"1"),
array("name"=>"p_xmldta", "io"=>I5_INOUT, "type" => I5_TYPE_CHAR, "length"=>"32000"),
);
$prog=i5_program_prepare("MK/A_PHPXML",$desc, $conn );
if (!$prog) {
display_error("i5_pgm_prepare");
exit();
}
//************************************************** ************
// Programmm starten
// $parms sind die Werte die an das RPG übergeben werden
// $retval damit werden die variablen vom RPG Programm gesetzt
//************************************************** ************
$parms = array ("p_delay"=> $_POST['delay'],
"p_xmldta"=>' '
);
$retval= array( "p_delay"=>"thedelayparm",
"p_xmldta"=>"the_xml_from_rpg_program"
);
$ret=i5_program_call($prog, $parms, $retval);
if (!$ret){
display_error("i5_pgm_call");
exit();
}
return $the_xml_from_rpg_program ;
i5_program_close($prog);
}
Gruß
Michael