dbx_query

(PHP 4 >= 4.0.6, PHP 5 < 5.1.0, PECL dbx >= 1.1.0)

dbx_query Sendet eine Abfrage und holt alle Ergebnisse (falls vorhanden)

Beschreibung

dbx_query ( object $link_identifier , string $sql_statement [, int $flags ] ) : mixed

Sendet eine Abfrage und holt alle Ergebnisse.

Parameter-Liste

link_identifier

The DBX link object returned by dbx_connect()

sql_statement

SQL statement.

Data inside the query should be properly escaped.

flags

Der Parameter flags wird verwendet, um die Menge der zu liefernden Informationen zu steuern. Die folgenden Konstanten können mit dem Bit-Operator (|) beliebig kombiniert werden. Die Flags DBX_COLNAMES_* heben die Einstellungen dbx.colnames_case in der php.ini auf.

DBX_RESULT_INDEX
Dieses Flag ist immer gesetzt, d.h. das zurückgegebene Objekt hat eine Eigenschaft data, welche aus einem zweidimensionalen, numerisch indizierten Array besteht. Zum Beispiel steht in data[2][3] die 2 für die Reihen- (bzw. Datensatz-) Nummer, und 3 steht für die Spalten- (bzw. Feld- Nummer). Die erste Reihe und Spalte haben den Index 0. Ist DBX_RESULT_ASSOC ebenfalls angegeben, so enthält das zurückgegebene Objekt auch Informationen im Zusammenhang mit DBX_RESULT_INFO, selbst wenn es nicht angegeben wurde.
DBX_RESULT_INFO
It provides info about columns, such as field names and field types.
DBX_RESULT_ASSOC
Dies bewirkt, dass in der data Eigenschaft des zurückgegebenen Objektes auf die Werte eines Feldes mit den entsprechenden Spaltennamen als Schlüssel zugegriffen werden kann. Assoziierte Ergebnisse sind eigentlich Referenzen zu den numerisch indizierten Daten, weshalb eine Änderung von data[0][0] auch den Inhalt von data[0]['feldname_für_erste_spalte'] betrifft.
DBX_RESULT_UNBUFFERED
Dieses Flag unterbindet die Erstellung der data Eigenschaft, und die rows Eigenschaft wird zunächst 0 sein. Das ist für große Datenmengen zu verwenden, wobei mit dbx_fetch_row() die Ergebnisse zeilenweise abgerufen werden. Die dbx_fetch_row() Funktion gibt Zeilen zurück, die mit den mit dieser Abfrage gesetzten Flags konform sind. Übrigens wird auch die rows Eigenschaft bei jedem Aufruf aktualisiert.
DBX_COLNAMES_UNCHANGED
Die Groß-/Kleinschreibung der zurückgegebenen Spaltennamen bleibt unangetastet.
DBX_COLNAMES_UPPERCASE
Die zurückgegebenen Spaltennamen werden in Großbuchstaben gewandelt.
DBX_COLNAMES_LOWERCASE
Die zurückgegebenen Spaltennamen werden in Kleinbuchstaben gewandelt.
Beachten Sie, dass DBX_RESULT_INDEX unabhängig von dem aktuell verwendeten Wert des Parameters flags immer verwendet wird. Das heißt, dass es effektiv nur die folgenden Kombinationen gibt:
  • DBX_RESULT_INDEX
  • DBX_RESULT_INDEX | DBX_RESULT_INFO
  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - dies ist Standard, wenn flags nicht angegeben ist.

Rückgabewerte

dbx_query() gibt bei Erfolg ein Objekt oder 1 zurück, und 0 im Fehlerfall. Das Objekt wird nur zurückgegeben, wenn die in sql_statement angegebene Abfrage eine Ergebnisliste liefert (d.h. eine SELECT-Abfrage, selbst wenn die Ergebnismenge leer ist).

Das zurückgegebene Objekt hat abhängig von flags vier oder fünf Eigenschaften:

handle

Das ein gültiges Handle für die verbundene Datenbank, und als solches kann es (wenn nötig) auch in modulspezifischen Funktionen verwendet werden.

<?php
$result 
dbx_query($link"SELECT id FROM table");
mysql_field_len($result->handle0);
?>

cols und rows

Diese enthalten die Anzahl der Spalten (oder Felder) bzw. Reihen (oder Datensätze).

<?php
$result 
dbx_query($link'SELECT id FROM table');
echo 
$result->rows// number of records
echo $result->cols// number of fields 
?>

info (optional)
Dies wird nur zurückgegeben, wenn im Parameter flags entweder DBX_RESULT_INFO oder DBX_RESULT_ASSOC spezifiziert sind. Es ist ein zweidimensionales Array mit zwei Reihen (name und type), welches die Spalteninformationen enthält.

Beispiel #1 Auflistung von Name und Typ jedes Feldes

<?php
$result 
dbx_query($link'SELECT id FROM table',
                     
DBX_RESULT_INDEX DBX_RESULT_INFO);

for (
$i 0$i $result->cols$i++ ) {
    echo 
$result->info['name'][$i] . "\n";
    echo 
$result->info['type'][$i] . "\n";  
}
?>
data
Diese Eigenschaft enthält die aktuellen Ergebnisdaten, möglicherweise auch mit den Spaltennamen assoziiert, was jedoch vom Parameter flags abhängig ist. Wenn DBX_RESULT_ASSOC gesetzt ist, kann $result->data[2]["feldname"] verwendet werden.

Beispiel #2 Ausgabe des Inhaltes der data Eigenschaft in eine HTML Tabelle

<?php
$result 
dbx_query($link'SELECT id, parentid, description FROM table');

echo 
"<table>\n";
foreach (
$result->data as $row) {
    echo 
"<tr>\n";
    foreach (
$row as $field) {
        echo 
"<td>$field</td>";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";
?>

Beispiel #3 Umgang mit UNGEPUFFERTEN Abfragen

<?php

$result 
dbx_query ($link'SELECT id, parentid, description FROM table'DBX_RESULT_UNBUFFERED);

echo 
"<table>\n";
while (
$row dbx_fetch_row($result)) {
    echo 
"<tr>\n";
    foreach (
$row as $field) {
        echo 
"<td>$field</td>";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Beispiele

Beispiel #4 Wie mit dem gelieferten Wert umgegangen wird

<?php
$link   
dbx_connect(DBX_ODBC"""db""username""password")
    or die(
"Fehler beim Verbinden");

$result dbx_query($link'SELECT id, parentid, description FROM table');

if (
is_object($result)) {
    
// ... tue hier irgendetwas, detaillierte Beispiele siehe unten ...
    // erst die Ausgabe der Feldnamen und Typen
    // dann die Ausgabe einer Tabelle mit den gelieferten Werten
} else {
    exit(
"Abfrage ist fehlgeschlagen");
}

dbx_close($link);
?>

Anmerkungen

Hinweis:

Die Modul spezifische Dokumentation sollte ebenfalls konsultiert werden.

Spaltennamen für Anfragen an eine Oracle Datenbank werden in Kleinbuchstaben zurückgegeben.

Siehe auch

  • dbx_escape_string() - Maskiert einen String, so dass er sicher in einem SQL-Statement verwendet werden kann
  • dbx_fetch_row() - Liest Zeilen aus einem Abfrageergebnis, das das DBX_RESULT_UNBUFFERED-Flag gesetzt hat
  • dbx_connect() - Öffnet eine Verbindung/Datenbank

add a note add a note

User Contributed Notes 1 note

up
0
BeyondMat
19 years ago
You can use stored procedures instead of having to specify a text string to execute, e.g.

$results = dbx_query($conn, 'sp_Test');

This executes the stored procedure sp_Test.
To Top