2012-06-28 49 views
0

我试图获得一个基于旧的基于PHP的应用程序,autonomous lan party工作的功能。它基于php4,但它确实符合我希望在php5服务器上执行的操作(它也仅用于Intranet环境)。我添加了一个会计附加from here。我可以理解PHP,但仍然有些生疏。PHP致命错误:调用未定义的方法resultSet :: free()

下面的代码一个小样本,我坚持了...

<FORM ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD="post" NAME="accounting" ID="accounting"> 
<strong>user: </strong><br> 
    <SELECT NAME="userid[]" SIZE="5" class="formcolors" TABINDEX="1" MULTIPLE> 
<?php 
      $data = $dbc->query('SELECT username,userid FROM users ORDER BY username'); 
      while ($row = $data->fetchRow()) { 
       $option = ' 
        <OPTION VALUE="%s" class="formcolors">%s</OPTION>'; 
       printf($option, $row['userid'], $row['username']); 
     } 
     $data->free(); 
     unset($option, $data); 
?> 
</SELECT> 

的问题是,一旦达到TE $data->free();线,脚本停止执行,并将该主题中提到的错误。如果我注释掉(两次,也有类似的线),脚本运行,但一旦我提交的数据我得到另一个错误日志文件...

PHP Warning: mysql_escape_string() expects parameter 1 to be string, array given 

我认为错误是因为我评论出$data->free();,所以它不能得到正确的结果。

我已经从pastebin here上的文件中粘贴了完整的代码(不想用其他所有代码填充此页面)。

任何帮助或援助将不胜感激。应用程序中的其他一切按预期工作。

+0

是'$ data' *真*一个类实例吗?如果是这样,你可能想要提供该类的代码。另外,从哪里调用'mysql_escape_string()'? – Havelock

回答

0

如果我理解正确,$data是一个mysql结果。

要从内存中释放结果,请尝试使用mysqli_free_result()来代替。

$data = $dbc->query('SELECT username,userid FROM users ORDER BY username'); 
while ($row = $data->fetchRow()) { 
    $option = ' 
      <OPTION VALUE="%s" class="formcolors">%s</OPTION>'; 
      printf($option, $row['userid'], $row['username']); 
} 
mysqli_free_result($data->free()); 
unset($option, $data); 
+0

谢谢你的建议。正确的,'$ data'是一个mysql结果。我已经按照建议尝试了'mysql_free_result()',但遇到了同样的问题。谢谢你,我已经给了我更多的东西了。 – user1487901

+0

你得到一个错误,指出它找不到函数,或者你得到'mysql_escape_string()'错误? – jurgemaister

+0

对不起,我得到'调用未定义的方法resultset :: free()'原始错误' – user1487901

相关问题