资源ID#正在显示 - PHP& MySQL的

时间:2012-01-06 14:58:58

标签: php mysql joomla

我正在运行以下脚本从我的数据库中的结果中绘制一个表:

$user =& JFactory::getUser();

$currentUser = $user->id;

$query = "SELECT * FROM jos_modelform_submissions WHERE user_id='".$currentUser."' AND model_type='model1'";
$db->setQuery($query);
$tableResults = $db->query();

$formLayout .= $tableResults;

echo "<div style='overflow:auto;'><table border='1' cellspacing='0' cellpadding='14'>
<tr bgcolor='#0D7CCD'>";
echo "<TD style='text-align:center;color:#FFFFFF;' width='25px'><b>ID</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='40px'><b>User ID</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='200px'><b>Input</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='600px'><b>Output</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='110px'><b>Model Type</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='100px'><b>Date/Time</b></TD>
</tr>";
echo "<tr><td colspan ='6'><div style='width:1075px;height:300px;overflow:auto;'><table border='1' cellspacing='0' cellpadding='14'>";
while ($row = mysql_fetch_array($tableResults)) 
{
$mix = array("<", "/>", ">", "/");
$output1 = str_replace($mix, "#", $row['output']);
$output2 = str_replace("#", "<BR/>", $output1);
echo "<tr onclick=\"alert('Test');\" onmouseover=\"document.body.style.cursor='pointer'\" onmouseout=\"document.body.style.cursor='default'\">";
echo "<TD style='text-align:center;' width='25px'>" . $row['id'] . "</td>";
echo "<TD style='text-align:center;' width='40px'>" . $row['user_id'] . "</td>";
echo "<TD width='200px'>" . $row['input'] . "</td>";
echo "<TD width='600px'>" .stripslashes($output2). "</td>";
echo "<TD style='text-align:center;' width='110px'>" . $row['model_type'] . "</td>";
echo "<TD style='text-align:center;' width='100px'>" . $row['date_time'] . "</td>";
echo "</tr>";
}
echo "</table> </div></td></tr></table></div></br></br>";

表格很好但在我的页面底部我得到了资源ID#的输出。我怎么能摆脱这个?某处的语法或逻辑是否有错误?您可以在此处看到运行的代码:

http://hanseninfotech.com/rtds/index.php/modelform1

3 个答案:

答案 0 :(得分:2)

你回应$formLayout ?

吗?

从你的代码:

$tableResults = $db->query();
$formLayout .= $tableResults;   // what does this line do ????

回显query()的返回将导致“Resource ###”

的输出

回显文件句柄(从fopen()返回)将产生相同的结果

答案 1 :(得分:1)

正如我所见,如果你有一个零元素,你就不会处理。

if (!$tableResults = $db->query()) {
    echo $db->stderr();
    return false;
  }

你之前也使用过Joomla的功能,为什么不再使用它?而不是使用mysql函数,使用$ row = $ db-&gt; loadAssocList();和foreach。

$row = $db->loadAssocList();
foreach ($row as $key=>$value) 
{
$mix = array("<", "/>", ">", "/");
$output1 = str_replace($mix, "#", $value['output']);
$output2 = str_replace("#", "<BR/>", $output1);
echo "<tr onclick=\"alert('Test');\" onmouseover=\"document.body.style.cursor='pointer'\" onmouseout=\"document.body.style.cursor='default'\">";
echo "<TD style='text-align:center;' width='25px'>" . $value['id'] . "</td>";
echo "<TD style='text-align:center;' width='40px'>" .$value['user_id'] . "</td>";
echo "<TD width='200px'>" . $value['input'] . "</td>";
echo "<TD width='600px'>" .stripslashes($output2). "</td>";
echo "<TD style='text-align:center;' width='110px'>" . $value['model_type'] . "</td>";
echo "<TD style='text-align:center;' width='100px'>" . $value['date_time'] . "</td>";
echo "</tr>";
}

可能有帮助。

另外我对HTML部分的看法:将HTML放入PHP代码就好了......我认为这是老式的编程风格。尽量避免混合PHP和HTML,如上例所示。尝试在HTML文件中使用HTML,在php文件中使用php代码,并将它们最小化地混合使用。我建议使用任何CMS或模板引擎,并分离php和HTML代码。

答案 2 :(得分:0)

您发布的代码不会输出资源ID。