2011-12-05 76 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):

$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); 

/*编辑:

功能:

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

此外,如果您只是简单地将MySQL连接编码设置为所需的字符集,而不是将每个字段从SJIS转换为UTF-8,似乎会更容易。 – deceze

+0

感谢所有的建议,我已经添加了功能和循环到我的问题。 @deceze,谢谢你将实现,没有我的脑海 – Yus

回答

1

检查你的主循环中,指数变量必须从0开始,所以如果你有3线返回时,最后一个索引必须是2

编辑: 更改为for($i=0; $i<$group_layer_row; $i++){,没有=,这是一个常见的错误

+0

是的,$我确实从0开始。谢谢 – Yus

+0

有多少行有回报?而最后一个$是...?在循环内部执行'var_dump($ i);'并检查它。 –

+0

循环应该返回33行。它返回第33行 - > 2,然后在最后一行给我这个错误 – Yus