marcus: select mit prepared statement

hi zusammen,

hab ne frage bzgl eines prepared statements unter php:

ich schicke mein select mit "$stmt->execute()" ab, z.b. "select * from xy where feld1=?".

so, jetzt wird das ausgeführt und ich will meine daten aus dem result bekommen.... frage ist aber wie! wie komme ich an die dynamische anzahl von rückgabespalten ran? ich müsste ja eigentlich alle manuell mit bind_result() ansprechen, was ich aber vermeiden will, da die methode generell nutzbar sein soll...

irgendwelche ideen hierzu?

danke im voraus!!

gruß
marcus

  1. Hallo marcus,

    so, jetzt wird das ausgeführt und ich will meine daten aus dem result bekommen.... frage ist aber wie! wie komme ich an die dynamische anzahl von rückgabespalten ran? ich müsste ja eigentlich alle manuell mit bind_result() ansprechen, was ich aber vermeiden will, da die methode generell nutzbar sein soll...

    RTFM:
    mysqli_num_fields
    mysqli_prepare

    Gruß,
    Benne

    --
    ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
    1. *grmpf*
      sorry, aber völlig nutzlose antwort, hätteste dir auch sparen können!

      is ja nicht so, dass ich erst seit gestern programmiere.
      ausserdem würde ich hier nicht fragen, wenn ich es nicht auch irgendwie anders hinbekommen würde.

      will ja keinen kompletten code, nur die logische vorgehensweise, weil meine bisheriger weg unter mysqli nicht mehr funktioniert.

      marcus

      Hallo marcus,

      so, jetzt wird das ausgeführt und ich will meine daten aus dem result bekommen.... frage ist aber wie! wie komme ich an die dynamische anzahl von rückgabespalten ran? ich müsste ja eigentlich alle manuell mit bind_result() ansprechen, was ich aber vermeiden will, da die methode generell nutzbar sein soll...
      RTFM:
      mysqli_num_fields
      mysqli_prepare

      Gruß,
      Benne

      1. Hallo marcus,

        sorry, aber völlig nutzlose antwort, hätteste dir auch sparen können!

        völlig nutzlose Fragestellung, hätteste dir auch sparen können!
        Vielleicht wunderst du dich, dass dir kaum einer geantwortet hat.
        Beim nächsten mal strengst du dich etwas mehr an, dann bekommste sicherlich auch gescheite Antworten.

        Benne

        --
        ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
        1. hi,

          wenn du keine antwort geben willst is das doch ok, aber dann antworte doch am besten gar nicht auf so ein posting! die antwort von dedlfix z.b. war vollkommen ausreichend und hat prima geholfen...
          ich kann es nur nicht ab, wenn leute in einem forum mit rtfm kommen, weil das einen mal so überhaupt nicht weiterbringt...

          andernfalls könnte man hier nämlich _JEDE_ frage einfach mit RTFM abtun und das forum hilft dann gar keinem mehr weiter... schliesslich kann man jede frage sicherlich in irgendeiner dämlichen doku nachlesen... oder?

          marcus

          Hallo marcus,

          sorry, aber völlig nutzlose antwort, hätteste dir auch sparen können!
          völlig nutzlose Fragestellung, hätteste dir auch sparen können!
          Vielleicht wunderst du dich, dass dir kaum einer geantwortet hat.
          Beim nächsten mal strengst du dich etwas mehr an, dann bekommste sicherlich auch gescheite Antworten.

          Benne

          1. echo $begrüßung;

            andernfalls könnte man hier nämlich _JEDE_ frage einfach mit RTFM abtun und das forum hilft dann gar keinem mehr weiter... schliesslich kann man jede frage sicherlich in irgendeiner dämlichen doku nachlesen... oder?

            Vielleicht wirst du jetzt lachen, aber nichts anderes habe ich gemacht. Ich hatte mich bisher nicht mit dem Thema mysqli beschäftigt. Aufgrund deiner Frage las ich im Handbuch nach, welche Funktionen es gibt und was deren Aufgabe ist, probierte ein wenig rum, war ein paar mal falsch und fand schließlich einen Lösungsweg. Außerdem sind mir dadurch eine Reihe neuer Funktionen über den Weg gelaufen, von denen ich nun zumindest weiß, dass es sie gibt. Bei Bedarf werde ich mich dann hoffentlich ihrer erinnern.

            Ich danke dir somit für dein Problem, das mich dazu veranlasste mir weiteres Wissen anzueignen.

            P.S. Bitte zitiere nur das, auf das du dich beziehst. Das so genannte TOFU ist ist nicht sinnvoll, sondern belastet nur das Archiv.

            echo "$verabschiedung $name";

  2. Moin!

    Grundsätzlich: </hilfe/charta.htm#tipps-fuer-fragende>.

    ich schicke mein select mit "$stmt->execute()" ab, z.b. "select * from xy where feld1=?".

    so, jetzt wird das ausgeführt und ich will meine daten aus dem result bekommen.... frage ist aber wie!

    Du kriegst von PEAR::DB ein Objekt zurück. Entweder DB_Error oder DB_Result. Nutze es.

    wie komme ich an die dynamische anzahl von rückgabespalten ran?

    RTFM zum zurückgegebenen Objekt. Das bringt Methoden mit, die die gewünschte Info geben.

    ich müsste ja eigentlich alle manuell mit bind_result() ansprechen, was ich aber vermeiden will, da die methode generell nutzbar sein soll...

    irgendwelche ideen hierzu?

    RTFM. bind_result() verwirrt mich aber, das ist keine im Bereich PEAR::DB definierte Methode.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
  3. echo $begrüßung;

    ich schicke mein select mit "$stmt->execute()" ab, z.b. "select * from xy where feld1=?".

    wie komme ich an die dynamische anzahl von rückgabespalten ran?

    Eine Methode der Klasse mysqli_stmt ist result_metadata(). Damit erhält man ein Objekt der Klasse mysqli_result. Diese hat eine Methode namens fetch_fields(), die ein Array mit Spalteninformationen zurückgibt. Die Anzahl der Spalten ist die Anzahl der Felder dieses Arrays.

    echo "$verabschiedung $name";

    1. hi dedlfix,

      perfekter hinweis, mehr wollte ich gar nicht. funzt prima.
      danke!

      gruß und schönes wochenende
      marcus

      echo $begrüßung;

      ich schicke mein select mit "$stmt->execute()" ab, z.b. "select * from xy where feld1=?".

      wie komme ich an die dynamische anzahl von rückgabespalten ran?

      Eine Methode der Klasse mysqli_stmt ist result_metadata(). Damit erhält man ein Objekt der Klasse mysqli_result. Diese hat eine Methode namens fetch_fields(), die ein Array mit Spalteninformationen zurückgibt. Die Anzahl der Spalten ist die Anzahl der Felder dieses Arrays.

      echo "$verabschiedung $name";