sybase_fetch_assoc
(PHP 4 >= 4.3.0, PHP 5)
sybase_fetch_assoc — Fetch a result row as an associative array
Description
$result
)sybase_fetch_assoc() is a version of sybase_fetch_row() that uses column names instead of integers for indices in the result array. Columns from different tables with the same names are returned as name, name1, name2, ..., nameN.
An important thing to note is that using sybase_fetch_assoc() is NOT significantly slower than using sybase_fetch_row(), while it provides a significant added value.
Parameters
-
result
-
Return Values
Returns an array that corresponds to the fetched row, or FALSE
if there
are no more rows.
Notes
Note: This function is only available when using the CT library interface to Sybase, and not with the DB library.
See Also
- sybase_fetch_row() - Get a result row as an enumerated array
- sybase_fetch_array() - Fetch row as array
- sybase_fetch_object() - Fetch a row as an object
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- Sybase
- sybase_affected_rows
- sybase_close
- sybase_connect
- sybase_data_seek
- sybase_deadlock_retry_count
- sybase_fetch_array
- sybase_fetch_assoc
- sybase_fetch_field
- sybase_fetch_object
- sybase_fetch_row
- sybase_field_seek
- sybase_free_result
- sybase_get_last_message
- sybase_min_client_severity
- sybase_min_error_severity
- sybase_min_message_severity
- sybase_min_server_severity
- sybase_num_fields
- sybase_num_rows
- sybase_pconnect
- sybase_query
- sybase_result
- sybase_select_db
- sybase_set_message_handler
- sybase_unbuffered_query
Коментарии
For users that want this function in other applications, use this function. I have been using it for over a year with great success.
function sybase_fetch_assoc($query_result){
$row = sybase_fetch_array($query_result);
$values = "";
if(is_array($row))
{
while(list($key, $val) = each($row))
{
$values[$key] = $val;
}
}
return $values;
}
Very often you see constructs like this to loop thru a result set:
while ($row = sybase_fetch_assoc($result))
{
while (current($row)) // or while (current($row) != false)
{
$data = current($row);
$key = key($row);
//
// do stuff here
//
next($row);
}
}
Do not use it in this way! You have to write the inner while loop this way:
while (current($row) !== false)
If you just use
while (current($row) != false)
or
while (current($row))
you could be in trouble and loose some data. In my case I had a query which contained the following statement:
datediff(dd, date1, date2) as days
Now if days computes to 0 then the two while loop examples from above will exit (because the 0 is 'seen' as false). Therefore you must use while (current($row) !== false) which will not exit if one of you data contains 0.
Hth,
rgds,
Marcus