Forum und email

dbx_query

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

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.

Example#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 == ) {
    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:
  • DBX_RESULT_INDEX
  • DBX_RESULT_INDEX | DBX_RESULT_INFO
  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - alapértelmezés, ha nincs megadva a flags .

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.

Example#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.

Example#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";

Note: Használd mindig az adatbázis specifikus dokumentációt is!

Lásd még: dbx_connect()!