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
sybase_fetch_assoc
(PHP 4 >= 4.3.0, PHP 5)
sybase_fetch_assoc — 結果の行を連想配列として取得する
説明
array sybase_fetch_assoc
( resource $result
)
sybase_fetch_assoc() は sybase_fetch_row() で数値インデックスのかわりに カラム名を使用するバージョンです。複数のテーブルから同じ名前の カラムが取得された場合、それらの名前は name, name1, name2, ..., nameN のような形式で返されます。
sybase_fetch_assoc() を使用した場合でも、 かなりの機能が付加されるにもかかわらず、 sybase_fetch_row() を使用した場合に比べて著しく 遅くなるということはないということを重要なこととして記しておきます。
パラメータ
- result
-
返り値
取得した行に対応する配列を返します。行がもうない場合には FALSE を返します。
注意
注意: この関数は、Sybase の CT ライブラリインターフェイスでのみ使用可能で、DB ライブラリでは使用できません。
sybase_fetch_assoc
elektrotechnik at onlinehome dot de
06-May-2004 01:33
06-May-2004 01:33
jpeterso at moody dot edu
01-Jul-2003 09:51
01-Jul-2003 09:51
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;
}
