dbx_query

(PHP 4 >= 4.0.6)

dbx_query --  végrehajt egy lekérdezést és visszaadja a teljes végeredményt (ha van)

Leírás

object dbx_query ( object link_identifier, string sql_statement [, long flags])

Az sql_statement sikeres végrehajtásakor 1-gyel vagy egy objektummal tér vissza, ez utóbbival csak olyan esetben, ha SQL utasításnak van végeredménye. Hiba esetén 0-t ad vissza.

Példa 1. A visszatérési érték lekezelésére

<?php
$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, 'SELECT id, szulo_id, leiras FROM tabla');

if ( is_object($result) ) {
    // ... néhány további művelet, lásd még a lenti példákat ...
    // először, a mezőnevek és típusaik kiírása
    // azután,  egy táblába kiírni a kapott végeredményt
}
else if ( $result == 1 ) {
    echo("A lekérdezést sikeresen végrehajtva, nincs visszaadott eredményhalmaz");
}
else {
    exit("Sikertelen lekérdezés");
}

dbx_close($link);
?>

A flags paraméteren keresztül szabályozható a visszaadandó információ mennyisége. Ez a következő állandók logikai vagy kapcsolata lehet:

DBX_RESULT_INDEX

Ez mindig felhasználásra kerül , és hatására a visszatérési érték része lesz egy két dimenziós tömb, amelynek az első indexe a sorindex, a második az oszlopindex, azaz például a data[2][3]-ban a 2 jelöli a sort, a 3 az oszlopot. Az indexelés 0-tól kezdődik.

Ha a DBX_RESULT_ASSOC is meg van adva, akkor a minden esetben a DBX_RESULT_INFO-nak megfelelő értékeket is szolgáltatja a függvény.

DBX_RESULT_INFO

Az oszlopokról ad információt: a mezők számáról, neveikről és típusaikról.

DBX_RESULT_ASSOC

Ennek hatására az oszlopértékeket az oszlopnevekkel is lehet indexelni, azaz a visszaadott eredményhalmaz asszociatív tömbként is használható.

Ezek az asszociatív indexek valójában referenciák a numerikus indexelésű értékekre, így a data[0][0]-t módosítva a data[0]['az_első_oszlop_mező_neve'] is megváltozik.

Megjegyzendő, hogy a DBX_RESULT_INDEX-et mindig használja a függvény, függetlenül a flags paraméter értékétől. Emiatt valójában csak az alábbi kombinációk értelmesek:

A visszaadott objektumnak négy vagy öt tagváltozója van a flags-től függően:

handle

Érvényes kapcsolatazonosító az adatbázishoz, és így szükség esetén az adott modulra jellemző függvények hívásához használható:

$result = dbx_query ($link, "SELECT id FROM tabla");
$length = mysql_field_len($result->handle, 0);

cols and rows

A cols és rows tagváltozók tárolják az eredményhalmaz méreteit: az oszlopok/mezők és a sorok/rekordok számát.

$result = dbx_query ($link, "SELECT id FROM tabla");
echo "Az eredmény mérete: " . $result->rows . " x " . $result->cols . "<br/>\n";

info (optional)

Az info tagváltozó csak akkor érhető el, ha a DBX_RESULT_INFO és/vagy DBX_RESULT_ASSOC szerepel a flags paraméterben. Ez olyan kétdimenzós tömb, amelynek két nevesített sora van (name és type) a mezőinformációk eléréséhez.

Példa 2. minden mező nevének és típusának kilistázása

$result = dbx_query ($link, 'SELECT id FROM tabla', 
        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

A data tagváltozó tartalmazza a tényleges végeredményt, az eredményhalmazt, ha van ilyen. Ha a DBX_RESULT_ASSOC is része a flags-nek, akkor az adatok $result->data[2]["mező_neve"] alakban is elérhetők lesznek, asszociatív tömbként kezelve a data-t.

Példa 3. a data tagváltozó kiíratása HTML táblaként

$result = dbx_query ($link, 'SELECT id, szulo_id, leiras FROM tabla');

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

Megjegyzés: Használd mindig az adatbázis specifikus dokumentációt is!

Lásd még: dbx_connect()!