Lord-Obirah
Grünschnabel
Servus beinand,
ich habe mich heute mit Stored Procedures und PHP beschäftigt. Ich habe mir mittels SQL Manager 2007 for MySQL eine Stored Procedure erstellt, die mir zu Testzwecken schlicht und ergreifend zwei Tabellen ausliest. Die Tabellen enthalten jeweils zwei Spalten mit einer ID und einem Namen, die erste Tabelle hat sieben Zeilen Inhalt, die zweite zwei Zeilen. Die Prozedur zum Auslesen sieht folgendermaßen aus:
Theoretisch sollten hier zwei Recordsets zurückkommen, führe ich diese Prozedur im SQL Manager aus, bekomme ich genau das was ich will und genau das, was rauskommen sollte.
Rufe ich diese Prozedur aber über PHP auf, bekomme ich nur ein einziges Recordset zurück, nämlich das, welches die erste SELECT-Abfrage erzeugt, die zweite Abfrage wird völlig ignoriert.
Der PHP-Code dazu sieht folgendermaßen aus:
Fehlermeldung gibt es keine, alles läuft wunderbar durch, abgesehen von der Tatsache, dass der zweite Datensatz nicht auf Quellcode-Seite ankommt!
Vielleicht weiß jemand den Grund dafür bzw. kann mir sagen, wie ich an den zweiten Datensatz bzw. allgemein an mehrer Datensätze rankomme. Ist das überhaupt möglich?
Danke für eure Hilfe!
Cheers!
ich habe mich heute mit Stored Procedures und PHP beschäftigt. Ich habe mir mittels SQL Manager 2007 for MySQL eine Stored Procedure erstellt, die mir zu Testzwecken schlicht und ergreifend zwei Tabellen ausliest. Die Tabellen enthalten jeweils zwei Spalten mit einer ID und einem Namen, die erste Tabelle hat sieben Zeilen Inhalt, die zweite zwei Zeilen. Die Prozedur zum Auslesen sieht folgendermaßen aus:
PHP:
CREATE DEFINER = 'root'@'localhost' PROCEDURE `getMyData`()
DETERMINISTIC
CONTAINS SQL
SQL SECURITY INVOKER
COMMENT ''
BEGIN
SELECT
*
FROM
tbl_owner;
SELECT
*
FROM
tbl_persons;
END;
Theoretisch sollten hier zwei Recordsets zurückkommen, führe ich diese Prozedur im SQL Manager aus, bekomme ich genau das was ich will und genau das, was rauskommen sollte.
Rufe ich diese Prozedur aber über PHP auf, bekomme ich nur ein einziges Recordset zurück, nämlich das, welches die erste SELECT-Abfrage erzeugt, die zweite Abfrage wird völlig ignoriert.
Der PHP-Code dazu sieht folgendermaßen aus:
PHP:
//Zugangsdaten
$host = 'xyz';
$user = 'abc';
$pass = '123';
$database = "myDataBase";
//Verbindung aufbauen
$db = new PDO('mysql:host='.$host.'; dbname='.$database, $user, $pass);
//Gespeicherte Prozedur aufrufen
$sql = "call `getMyData`()";
$abfrage = $db->query($sql);
//Daten ausgeben
$RecordSet = $abfrage->fetchObject();
print_r($RecordSet);
echo '<p />';
//nächstes Ergebnis
$abfrage->nextRowset();
$RecordSet = $abfrage->fetchObject();
print_r($RecordSet);
Fehlermeldung gibt es keine, alles läuft wunderbar durch, abgesehen von der Tatsache, dass der zweite Datensatz nicht auf Quellcode-Seite ankommt!
Vielleicht weiß jemand den Grund dafür bzw. kann mir sagen, wie ich an den zweiten Datensatz bzw. allgemein an mehrer Datensätze rankomme. Ist das überhaupt möglich?
Danke für eure Hilfe!
Cheers!