我有一个非常基本的论坛模板,我正在为测试目的而努力
当我创建主题并按提交时,proccess更新数据库但不在屏幕上输出。为什么是这样?当我通过以下代码回显$ result时,为什么我得到资源ID#4:
<?php
$host="server"; // Host name
$username="usernamehere"; // Mysql username
$password=""; // Mysql password
$db_name="forum"; // Database name
$tbl_name="question"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
echo $result;
?>
<html>
<body>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Views</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Replies</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Date/Time</strong></td>
</tr>
<?php
// Start looping table row
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['view']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['reply']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['datetime']; ?></td>
</tr>
<?php
// Exit looping and close connection
}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>Create New Topic</strong> </a></td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:10)
您收到resource id #4
因为$result
是一种资源,您必须通过这种方式提取其中包含的值,
$result=mysql_query($sql);
$values = mysql_fetch_array($result);
var_dump($values);
的更多信息
更新2(来自OP评论)
您正在使用字段名称打印值,在这种情况下,您必须更改为
while($rows=mysql_fetch_array($result,MYSQL_ASSOC))
或者您可以直接使用mysql_fetch_assoc(),在您的情况下将是
while($rows=mysql_fetch_assoc($result)){
echo $rows['id'];
}
答案 1 :(得分:4)
问题在于您的代码:
$result=mysql_query($sql);
echo $result;
$result
是资源类型,因为mysql_query($sql)
返回资源
停止回显$result
。
答案 2 :(得分:2)
如果您查看链接 - http://php.net/manual/en/function.mysql-query.php
对于返回结果集的SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句,mysql_query()在成功时返回资源,或在出错时返回FALSE
因此,您正在看到资源#4
。你想要实现什么目标?
答案 3 :(得分:0)
<?php
$host="server";
$username="usernamehere";
$password="";
$db_name="forum";
$tbl_name="question";
mysql_connect("$host", "$username", "")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
echo $result; //remove it
?>
<html>
<body>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Views</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Replies</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Date/Time</strong></td>
</tr>
<?php
// Start looping table row
while($rows=mysql_fetch_array($result)){
echo"<tr>
<td bgcolor=#FFFFFF>$rows['id']</td>
<td bgcolor=#FFFFFF><a href='view_topic.php?id=$rows['id']'>$rows['topic']</a><BR></td>
<td align=center bgcolor=#FFFFFF>$rows['view']</td>
<td align=center bgcolor=#FFFFFF>$rows['reply']</td>
<td align=center bgcolor=#FFFFFF>$rows['datetime'];</td>
</tr>";
// Exit looping and close connection
}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>Create New Topic</strong> </a></td>
</tr>
</table>
</body>
</html>
只需检查上面的代码我认为您的问题应该完成
答案 4 :(得分:-2)
您不必使用mysql_fetch_array()。如果你愿意,试试这样的事情:
$sql="SELECT * FROM $tbl_name ORDER BY id DESC"; //that's your query
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
$iteration=0;
echo "<table>";
while($iteration < $rows){
$cell_in_your_html_table = mysql_result($result , $iteration , 'column_name_from_database');
echo "<tr><td>".$cell_in_your_html_table."</td></tr>";
$iteration++;
}
echo "</table>"