mssql_data_seek will return false AND trigger a warning ('Bad row offset') if you specify a row outside the result set.
You'll need to check beforehand if the row you are trying to seek to exists. Or you can supress the error and look for the false result, depending on your needs.
To check beforehand (where $result is the result fo your query and $seek is the row number you want to seek to):
<?php
$rowcount = mssql_num_rows($result);
if ($seek >= $rowcount)
{
print ("Trying to seek outside result set!");
}
else
{
if (!mssql_data_seek($result, $seek))
{
print ("Seek failed");
}
else
{
print ("Seek complete");
}
}
?>
To have a 'simpler' way of handling errors by supressing the warning:
<?php
if (!@mssql_data_seek($result, $seek))
{
print ("Seek failed");
}
else
{
print ("Seek complete");
}
?>
mssql_data_seek
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_data_seek — Bewegt den internen Datensatzzeiger
Beschreibung
bool mssql_data_seek
( resource
$result_identifier
, int $row_number
)
mssql_data_seek() bewegt den internen Datensatzzeiger
des mit der angegebenen Ergebniskennung
result_identifier verbundenen Ergebnisses zur
angegebenen Datensatznummer row_number, wobei der
erste Datensatz die Nummer 0 hat. Beim nächsten Aufruf von
mssql_fetch_row() wird nun dieser Datensatz zurückgeben.
Parameter-Liste
-
result_identifier -
Der Bezeichner des Ergebnisses, das ausgewertet wird
-
row_number -
Die gewünschte Zeilennummer des neuen Datensatzzeigers
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Beispiele
Beispiel #1 mssql_data_seek()-Beispiel
<?php
// Mit MSSQL verbinden und Datenbank auswählen
$verbindung = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $verbindung);
// Leute auswählen
$anfrage = mssql_query('SELECT [name], [age] FROM [persons] WHERE [age] >= 13');
if (!$anfrage) {
die('Die Anfrage schlug fehl.');
}
// Aus dem Ergebnis jeden vierten Schüler auswählen
for ($i = mssql_num_rows($anfrage) - 1; $i % 4; $i++) {
if (!mssql_data_seek($anfrage, $i))
{
continue;
}
// Datensatz holen ...
}
// Den Ergebnisspeicher freigeben
mssql_free_result($anfrage);
?>
phpcomments at hltools dot com ¶
7 years ago
