Anmelden

View Full Version : Frage zum Programmaufruf von PHP aus



Seiten : 1 [2]

David
04-04-08, 12:09
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.

Peet
28-08-10, 12:14
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

Freese
14-12-11, 10:01
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.

Fuerchau
14-12-11, 10:52
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.

mk
14-12-11, 12:27
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