我正在尝试使用基于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粘贴了文件中的完整代码(不想用其他所有代码填充此页面)。
非常感谢任何帮助或帮助。应用程序上的其他所有内容都按预期工作。
答案 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);