PHP致命错误:调用未定义的方法resultSet :: free()

时间:2012-06-28 08:39:05

标签: php mysql

我正在尝试使用基于PHP的旧应用程序autonomous lan party。它基于php4,但它确实适用于我想在php5服务器上执行的操作(它也只在Intranet环境中使用)。我正在添加一个会计插件from here。我可以理解php,但仍然有些生疏。

下面是一小段代码我坚持......

<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粘贴了文件中的完整代码(不想用其他所有代码填充此页面)。

非常感谢任何帮助或帮助。应用程序上的其他所有内容都按预期工作。

1 个答案:

答案 0 :(得分: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);