(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_fetch_row — Liefert einen Datensatz als indiziertes Array
mssql_fetch_row() liefert einen Datensatz von dem Ergebnis, das zur angegebenen Ergebniskennung result gehört. Der Datensatz wird als Array zurückgegeben. Jedes Feld des Ergebnisses wird in einem Array-Offset gespeichert, der bei Offset 0 beginnt.
Ein nachfolgender Aufruf von mssql_fetch_row() gibt den nächsten Datensatz aus dem Ergebnis zurück oder FALSE, wenn es keine weiteren Datensätze gibt.
Der Bezeichner des Ergebnisses, das ausgewertet wird. Dieses Ergebnis stammt von einem Aufruf von mssql_query().
Gibt ein Array mit dem gelieferten Datensatz zurück oder FALSE, wenn es keinen weiteren Datensatz gibt.
Beispiel #1 mssql_fetch_row()-Beispiel
<?php
// Mit MSSQL verbinden und Datenbank auswählen
$verbindung = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $verbindung);
// Die auszuführende Anfrage
$anfrage = mssql_query('SELECT [id], [quote] FROM [quotes] WHERE [id] = \'42\'', $verbindung);
// Schlug die Anfrage fehl?
if (!$anfrage) {
die('MSSQL-Fehler: ' . mssql_get_last_message());
}
// Den Datensatz abrufen
$datensatz = mssql_fetch_row($anfrage);
// 'quote' ausgeben
echo 'Zitat #' . $datensatz[0] . ': "' . $datensatz[1] . '"';
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Zitat #42: "Die Antwort auf alles..."
Hinweis: Diese Funktion setzt NULL-Felder auf den PHP Wert-NULL.
It seems that when you use the MSSQL fetch_* functions you need to manually reset the $result 's internal pointer when doinging a while loop.
i.e.the below seems to only print out the first set. I don't remember this being the case with mysql, but it makes sense that it would do the same.
while ($or_date_info = mssql_fetch_assoc($result)){
echo '1st pass<BR>';
print_r($or_date_info);
}
while ($or_date_info = mssql_fetch_assoc($result)){
echo '2nd pass<BR>';
print_r($or_date_info);
}
Blaine Garrett
http://artattack.to?zombie
jus do this instead.. no for loop necessary
while($line = mssql_fetch_row($result)){
print "$line[0],$line[1]"; // etc.
}
no need to have a whole extra variable $i tossed in
It took me way too long to notice the MySQL error in the note above (way tooo late and not enough sleep). Here's what I hacked up:
<?php
$hostname = "localhost";
$username = "username";
$password = "password";
$dbName = "database";
MSSQL_CONNECT($hostname,$username,$password) or DIE("DATABASE FAILED TO RESPOND.");
mssql_select_db($dbName) or DIE("Table unavailable");
$query = "SELECT * FROM dbo.table";
$result = mssql_query( $query );
for ($i = 0; $i < mssql_num_rows( $result ); ++$i)
{
$line = mssql_fetch_row($result);
print( "$line[0] - $line[1]\n");
}
?>
Thanks,
will_ @ irc.openprojects.net#php