Hallo!
Ich suche schon seit fast einem ganzen Arbeitstag nach dem Fehler und kann keinen entdecken.
Problem:
Ich rufe eine Stored Procedure auf. Wenn ich den Parameter hardcodiere ("caller2" im Code), dann funkt es. Dh der Parameter 16 wird in die DB geschrieben.
Wenn ich allerdings bindParam verwende ("caller"), funktioniert es nicht. Im PostgreSQL-Log erhalte ich keine Fehlermeldung. Das Insert in die DB hat aber nicht stattgefunden für die Werte 17 und 19.
Über caller und caller2 wird allerdings die selbe SP aufgerufen.
Die Echos werden alle korrekt angezeigt, das Script hat also keinen gröberen Fehler und läuft ohne Exception durch.
Ich orientierte mich dabei an Vorlagen aus der PHP-Doku und kann leider nach vielem hin- und herprobieren vulgo Fehlersuche/-eingrenzung immer noch keinen Fehler erkennen.
Prinzipiell funktioniert die Verwendung von bindParam auf meinem Server allerdings, zB wenn ich ein Prepared Statement verwende (insert im konkreten Fall getestet), weshalb ich ein Konfigurationsproblem eher ausschließen würde.
Vielleicht kann mir einer von euch helfen.
Die SP übernimmt einen In-Parameter. Es gibt keinen Rückgabewert.
PostgreSQL 11
<?php
echo date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
echo "<br />";
echo "<br />";
$dsn='pgsql:host=localhost;dbname=DerDbName;user=p ostgres;password=DasPasswortMeinerWahlDasDuNichtKe nnenBrauchst';
$conn = new PDO($dsn);
$conn2 = new PDO($dsn);
if(!$conn)
{
echo "Error xyz: Verbindung nicht herstellbar";
}
$p1=17;
$stmt="call testproc2(?)";
$caller = $conn->prepare($stmt);
$caller->bindParam(1, $p1, PDO::PARAM_INT);
$caller->execute();
echo "nach execute <br />";
$p1=19;
$caller->execute();
echo "nach execute <br />";
echo "<br />";
echo "es folgt ein Aufruf ohne Parameterbinding, mit hardcoded Parameter 16 <br />";
$stmt2="call testproc2(16)";
$caller2 = $conn2->prepare($stmt2);
$caller2->execute();
echo "nach execute <br />";
?>
Danke für eure Unterstützung!
Ich suche schon seit fast einem ganzen Arbeitstag nach dem Fehler und kann keinen entdecken.
Problem:
Ich rufe eine Stored Procedure auf. Wenn ich den Parameter hardcodiere ("caller2" im Code), dann funkt es. Dh der Parameter 16 wird in die DB geschrieben.
Wenn ich allerdings bindParam verwende ("caller"), funktioniert es nicht. Im PostgreSQL-Log erhalte ich keine Fehlermeldung. Das Insert in die DB hat aber nicht stattgefunden für die Werte 17 und 19.
Über caller und caller2 wird allerdings die selbe SP aufgerufen.
Die Echos werden alle korrekt angezeigt, das Script hat also keinen gröberen Fehler und läuft ohne Exception durch.
Ich orientierte mich dabei an Vorlagen aus der PHP-Doku und kann leider nach vielem hin- und herprobieren vulgo Fehlersuche/-eingrenzung immer noch keinen Fehler erkennen.
Prinzipiell funktioniert die Verwendung von bindParam auf meinem Server allerdings, zB wenn ich ein Prepared Statement verwende (insert im konkreten Fall getestet), weshalb ich ein Konfigurationsproblem eher ausschließen würde.
Vielleicht kann mir einer von euch helfen.
Die SP übernimmt einen In-Parameter. Es gibt keinen Rückgabewert.
PostgreSQL 11
<?php
echo date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
echo "<br />";
echo "<br />";
$dsn='pgsql:host=localhost;dbname=DerDbName;user=p ostgres;password=DasPasswortMeinerWahlDasDuNichtKe nnenBrauchst';
$conn = new PDO($dsn);
$conn2 = new PDO($dsn);
if(!$conn)
{
echo "Error xyz: Verbindung nicht herstellbar";
}
$p1=17;
$stmt="call testproc2(?)";
$caller = $conn->prepare($stmt);
$caller->bindParam(1, $p1, PDO::PARAM_INT);
$caller->execute();
echo "nach execute <br />";
$p1=19;
$caller->execute();
echo "nach execute <br />";
echo "<br />";
echo "es folgt ein Aufruf ohne Parameterbinding, mit hardcoded Parameter 16 <br />";
$stmt2="call testproc2(16)";
$caller2 = $conn2->prepare($stmt2);
$caller2->execute();
echo "nach execute <br />";
?>
Danke für eure Unterstützung!
Kommentar