У меня есть довольно простой шаблон форума, над которым я работаю для тестирования
Когда я создаю тему и нажимаю submit, proccess обновляет базу данных, но не выводит ее на экран. Почему это? и почему я получаю идентификатор ресурса № 4, когда я возвращаю результат $ result из этого кода ниже:
<?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>
Вы получаете 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']; }
вwhile($rows=mysql_fetch_assoc($result)){ echo $rows['id']; }
Проблема в вашем коде:
$result=mysql_query($sql); echo $result;
$result
– тип ресурса, так как mysql_query($sql)
возвращает ресурс Stop echoing $result
.
Если вы проверите ссылку – http://php.net/manual/en/function.mysql-query.php
Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке
Следовательно, вы видите Ресурс №4
, Чего вы хотите достичь?
<?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>
в<?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>
просто проверьте код выше, я думаю, что ваша проблема должна быть выполнена
Вам не нужно использовать 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>"