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.
(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)
Sendet eine Abfrage und holt alle Ergebnisse.
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
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
DBX_RESULT_ASSOC
data[0][0]
auch den Inhalt von
data[0]['feldname_für_erste_spalte']
betrifft.
DBX_RESULT_UNBUFFERED
DBX_COLNAMES_UNCHANGED
DBX_COLNAMES_UPPERCASE
DBX_COLNAMES_LOWERCASE
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.
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:
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->handle, 0);
?>
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
?>
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";
}
?>
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";
?>
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);
?>
Hinweis:
Die Modul spezifische Dokumentation sollte ebenfalls konsultiert werden.
Spaltennamen für Anfragen an eine Oracle Datenbank werden in Kleinbuchstaben zurückgegeben.