2011-12-05 16 views
-1

dbテーブルからすべての値を取得すると、最後の結果値でこのエラーが発生します。エラー - 不正行オフセット

Warning: mssql_result() function.mssql-result: 
    Bad row offset (32) in C:\ms4w\Apache\htdocs\mapserver\data\.... on line 38 

ライン38:

$str = "MyMap_".mb_convert_encoding(mssql_result($result_set, $row, 0),"UTF-8","SJIS")."_".mb_convert_encoding(mssql_result($result_set, $row, 1),"UTF-8","SJIS"); 

、私の設定($ sqlを、$詐欺):

$con = mssql_connect ("myServer", "myUsername", "myPassword"); 
$sql = "SELECT * FROM m_group_layer WHERE group_id=\"".$_SESSION["group_id"]."\" ORDER BY display_order"; 
$rs_group_layer = mssql_query ($sql, $con); 
$group_layer_row = mssql_num_rows($rs_group_layer); 

/* EDIT:

機能:

function getLayer($result_set, $row){ 
    $str = "MyMap_".mb_convert_encoding(mssql_result($result_set, $row, 0),"UTF-8","SJIS")."_".mb_convert_encoding(mssql_result($result_set, $row, 1),"UTF-8","SJIS"); 
    return "var ".$str.";\n\n"; 
} 

ループ:

for($i=0; $i<=$group_layer_row; $i++){ 
    echo getLayer($rs_group_layer, $i); 
} 

*/

は、正直なところ、私が何このエラーは、この正確にわかりません。だから、もし私が必要に応じて投稿する責任があるかもしれない他のコードがある場合、私は典型的にはこのエラーの原因についていくつかの提案を得ることができます。

ありがとうございました。

+0

'$ row'はどこから来たのですか? – deceze

+0

また、SJISからUTF-8にすべてのフィールドを変換するのではなく、必要な文字セットにMySQL接続のエンコーディングを設定するだけで簡単にできます。 – deceze

+0

すべての提案をいただきありがとうございます。私は関数とループを私の質問に追加しました。 @deceze、ありがとうございます、私の心を越えていませんでした。 – Yus

答えて

1

は、あなたが戻って3つのラインを持っている場合は、最後のインデックスは2

EDITでなければならないので、インデックス変数は、0で始まる必要があり、あなたのメインループを確認してください:=せず、 変更for($i=0; $i<$group_layer_row; $i++){に、それはよくある間違いです

+0

はい、$は0から始まります。ありがとう – Yus

+0

返信数はいくつですか?最後の$ iは...ですか?ループ内で 'var_dump($ i);'を実行してチェックしてください。 –

+0

ループは33行を返す必要があります。行33 - > 2を返し、最後の行でこのエラーを返します。 – Yus

関連する問題