PHP 使用mysql_fetch_array来填充表格


PHP using mysql_fetch_array to fill a table

好的 在您告诉我使用 mysqli 之前,我故意在 Web 应用程序课程中使用折旧方法。我不是学生,这不是家庭作业,而是帮助我了解Web应用程序安全。

我不知道为什么这行不通。基本上,我要做的就是创建一个页面,从 mysql 数据库中获取数据并将其放入表中,如图所示。在这一点上,我对任何事情都持开放态度。

提前谢谢你。

 <html>
 <head><title>Untitled</title></head>
 <body>
  <h1>Weblog Example</h1>
 <dl>
 <?php
   mysql_connect("localhost","root","");
   mysql_select_db("blog1");
   $query ="SELECT entrytitle, entrytext,";
   $query.=" DATE_FORMAT(entrydate, '%M %d, %Y') AS entrydate";
   $query.=" FROM weblog ORDER BY entrydate DESC LIMIT 10";
   $result=mysql_query($query);
  
   ?>
   <table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Title</strong></td>
<td width="75%" align="center" bgcolor="#E6E6E6"><strong>Entry</strong></td>
<td width="15" align="center" bgcolor="#E6E6E6"><strong>Date/Time</strong></td>
</tr>
  
<?php
  while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['entrytitle']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['entrytext']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['entrydate']; ?></td>
</tr>
<?php
}
?>
 </dl>
 </body>
</html>

好的 - 进行了一些小的编辑 - 它现在在表中给了我 3 行,但没有填充数据......

对$entrytitle和$entrytext进行var_dump,您就会明白自己的错误。执行mysql_fetch_array时,数据会临时存储在$rows中。

<?php
  while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><? echo $rows["entrytitle"]; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows["entrytext"]; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows["entrytext"]; ?></td>
</tr>
<?php
}
?>

您在 while 循环中使用了错误的变量,您也没有从查询结果中引用正确的date列。

这应该会给你你想要的东西:

<?php
  while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><?php echo $rows['entrytitle']; ?></td>
<td align="center" bgcolor="#FFFFFF"><?php echo $rows['entrytext']; ?></td>
<td align="center" bgcolor="#FFFFFF"><?php echo $rows['entrydate']; ?></td>
</tr>
<?php
}
?>

您的两个$query.=都应该读作$query .=仅此一项就会成为一个问题,并且由于点前缺少空格而无法正确连接。

您还缺少</table>标记。

另外,请确保设置/打开短标签,否则<?php echo $rows...
而不是<? echo $rows....

还应使用以下方法检查可能的查询错误:

$result = mysql_query($query) or die(mysql_error());

以及使用错误报告

将错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:错误报告只应在暂存中完成,而不应在生产环境中完成。


  • 我还建议您切换到带有预准备语句的 mysqli,或者使用带有准备好语句的 PDO它们更安全