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
mssql_fetch_row
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_fetch_row — 配列として行を取得する
説明
array mssql_fetch_row
( resource $result
)
mssql_fetch_row() は指定した結果 ID に関連する結果から 1 行分のデータを取得します。行は配列として返されます。 配列オフセットに保存された各結果カラムは、オブセット 0 から始まります。
mssql_fetch_rows() を続けてコールした場合、 結果セットの次の行が返され、行がもうない場合は FALSE が返されます。
返り値
取得された行に対応する配列、または行がもうない場合に FALSE を返します。
例
例1 mssql_fetch_row() の例
<?php
// サーバとデータベースに接続します
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);
// クエリを実行します
$query = mssql_query('SELECT [id], [quote] FROM [quotes] WHERE [id] = \'42\'', $link);
// クエリが失敗したか?
if(!$query)
{
die('MSSQL error: ' . mssql_get_last_message());
}
// 行を取得します
$row = mssql_fetch_row($query);
// 'quote' を表示します
echo 'Quote #' . $row[0] . ': "' . $row[1] . '"';
?>
上の例の出力は、 たとえば以下のようになります。
Quote #42: "The answer to everything..."
注意
注意: この関数は、 NULL フィールドに PHPの NULL 値を設定します。
参考
- mssql_fetch_array() - 連想配列・数値添字配列・あるいはその両方で結果の行を取得する
- mssql_fetch_object() - オブジェクトとして行を取得する
- mssql_data_seek() - 内部行ポインタを移動する
- mssql_result() - 結果データを得る
mssql_fetch_row
zombie(at)artattack(dot)to
05-Dec-2003 09:50
05-Dec-2003 09:50
siivv at yahoo dot com
24-Apr-2002 10:35
24-Apr-2002 10:35
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
will_ <sql at mookandblanchard dot com>
01-Feb-2002 06:44
01-Feb-2002 06:44
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
