0

我试图让一个函数在一个旧的基于 php 的应用程序上运行,自治局域网方。它基于 php4,但它确实可以在 php5 服务器上执行我希望它执行的操作(它也仅用于 Intranet 环境)。我正在从这里添加一个会计插件。我能理解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 文件中的完整代码(不想用所有其他代码填充此页面)。

任何帮助或帮助将不胜感激。应用程序上的其他所有内容都按预期工作。

4

1 回答 1

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);
于 2012-06-28T12:56:47.207 回答