PHP Handbuch
Zurück |  | Nach vorne

# sesam_query

(PHP 3 CVS only)

sesam_query -- Durchführen einer SESAM-SQL-Abfrage und aufbereiten der Ergebnisse

## Beschreibung

string sesam_query ( string query [, bool scrollable])

Rückgabewerte: ein SESAM "result identifier" oder `FALSE` im Fehlerfall.

Von anderen Funktionen wird "result_id" für Abfrage-Ergebnisse verwendet.

sesam_query() schickt eine Abfrage an die aktuelle Datenbank auf dem Server. Sie kann sowohl "immediate" SQL-Anweisungen als auch "select type" Abfragen ausführen. Bei der Ausführung einer "immediate" Anweisung ist kein Cursor aktiv und bei jedem folgenden sesam_fetch_row() oder sesam_fetch_result() call will return an empty Aufruf wird ein leeres Ergebnis (zero columns, indicating end-of-result) zurückgeliefert. Für "select type" Anweisungen wird ein Ergebnis-Deskriptor und ein Cursor (scrollable oder sequential, abhängig vom optionalen bool `scrollable`-Parameter) zugewiesen. Wenn `scrollable` nicht angegeben wird, ist der Cursor sequentiell.

Bei der Verwendung von "scrollable" Cursors kann der Cursor im Ausgabesatz beliebig positioniert werden. Für jede "scrollable" Abfrage gibt es globale Standardwerte für den "scrolling"-Typ (Initial-Wert: `SESAM_SEEK_NEXT`) und den scrolling offset, der entweder einmal durch sesam_seek_row() oder bei jedem Lesen einer Zeile mit sesam_fetch_row().

Für "immediate" Befehle wird die Anzahl der betroffenen Zeilen für Abfragen von der Funktion sesam_affected_rows() gesichert.

Siehe auch: sesam_fetch_row() und sesam_fetch_result().

Beispiel 1. Zeige alle Zeilen der Tabelle "Telefon" als HTML-Tabelle
    <?php
    if (!sesam_connect("phonedb", "demo", "otto"))
      die("cannot connect");
    $result = sesam_query("select * from phone");
    if (!$result) {
      $err = sesam_diagnostic();
      die($err["errmsg"]);
    }
    echo "<TABLE BORDER>\n";
    // Add title header with column names above the result:
    if ($cols = sesam_field_array($result)) {
      echo " <TR><TH COLSPAN=".$cols["count"].">Result:</TH></TR>\n";
      echo " <TR>\n";
      for ($col = 0; $col < $cols["count"]; ++$col) {
        $colattr = $cols[$col];
        /* Span the table head over SESAM's "Multiple Fields": */
        if ($colattr["count"] > 1) {
          echo "  <TH COLSPAN=".$colattr["count"].">".$colattr["name"].
               "(1..".$colattr["count"].")</TH>\n";
          $col += $colattr["count"] - 1;
        }
        else
          echo "  <TH>" . $colattr["name"] . "</TH>\n";
      }
      echo " </TR>\n";
    }

    do {
      // Fetch the result in chunks of 100 rows max.
      $ok = sesam_fetch_result($result,100);
      for ($row=0; $row < $ok["rows"]; ++$row) {
        echo " <TR>\n";
        for ($col = 0; $col < $ok["cols"]; ++$col) {
          if (isset($ok[$col][$row]))
            echo "  <TD>" . $ok[$col][$row] . "</TD>\n";
          else
            echo "  <TD>-empty-</TD>\n";
        }
        echo " </TR>\n";
      }
    } while ($ok["truncated"]); // while there may be more data
    echo "</TABLE>\n";
    // free result id
    sesam_free_result($result);
    ?>

Zurück | Zum Anfang | Nach vorne
sesam_num_fields | Nach oben | sesam_rollback