2011-05-01 123 views
2

嗨,html表未从MySQL表中填充

我正在修改通过Google发现的一些脚本,该脚本监视登录到网站的用户。

它由包括本每一页中的我想监控:

<? 
include_once("config.php"); 
include_once("functions.php"); 
?> 

config.php文件看起来像这样(我已删除了实际的数据库信息):

<?php 
     DEFINE ('DB_USER', '');// database username 
     DEFINE ('DB_PASSWORD', '');//database password 
     DEFINE ('DB_HOST', '');//database host, usually localhost 
     DEFINE ('DB_NAME', '');//and finally the database name 
     $dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error()); 
     @mysql_select_db (DB_NAME) OR die('Could not select the database: ' . mysql_error()); 
?> 

的functions.php看起来像这样:

<?php 
$page = $_SERVER['PHP_SELF']; 
$user = $_SESSION["name"]; 
$logq = "INSERT INTO logs (Name, Page, Date) VALUES ('$user', '$page', NOW())"; 
$logr = @mysql_query($logq); 
?> 

这工作正常,即我的数据库中的表填充correctl年。

但是,应该在网页上生成表来显示MySQL表中的信息的文件不起作用。该文件,logs.php,看起来是这样的:“没有结果”

<?php 
     $lq = "SELECT id, Name, Page, DATE_FORMAT(date, '%d %M, %Y') as sd FROM logs ORDER BY id DESC LIMIT 50"; 
     $lr = @mysql_query($lq); 

     if($lr){ 
     echo "<table><th>Name</th><th>Page</th><th>Date</th>"; 
     while($lf = mysql_fetch_array($lr, MYSQL_ASSOC)){ 
     echo "<tr><td>" . $lf['Name'] . "</td><td>" . $lf['Page'] . "</td><td>" . $lf['sd'] . "</td></tr>"; 
     } 
     echo "</table>"; 
     } 
     else 
     { 
     echo "No results!"; 
     } 
?> 

即使有在MySQL表,我永远只是获取数据显示何时浏览到该页面。

任何人都可以看到什么问题是?

感谢,

尼克

+2

您应该删除'@',看看它吐出。另外,请尝试手动运行查询 – JohnP 2011-05-01 12:25:23

+0

这需要进行基本的调试。从mysql_query调用中除去'@',并输出可能的mySQL错误,例如使用'if(!$ lr)trigger_error(mysql_error());'。 – 2011-05-01 12:25:53

+0

你有“id”专栏吗? – 2011-05-01 12:28:35

回答

1

也许你在logs.php没有db连接?如果你的代码是完整的文件,那么这应该是问题。 如果是这样,只需在页面顶部添加config.php即可。

+0

谢谢,这的确是问题所在。在我从代码获得代码的原始演示页面中没有提到这一点。 – Nick 2011-05-01 14:03:15

1

有一件事我可以在查询中看到的是,date是一个保留字。

您需要包装在反引号:

"SELECT id, Name, Page, DATE_FORMAT(`date`, '%d %M, %Y').... 

或重命名列。

这可能会在您的查询中抛出一个错误,即使您推荐使用trigger_error()推荐:您的服务器上可能已关闭错误报告。这是生产环境中的正确行为,因为您不希望用户看到错误消息。在开发过程中,您可以激活错误报告来查看错误。

0

尝试做这样的

$query = "SELECT * FROM logs ORDER BY id DESC LIMIT 50"; 
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result)) { echo "<table><th>Name</th><th>Page</th><th>Date</th>"; echo "<tr><td>" . $row['Name'] . "</td><td>" . $row['Page'] . "</td><td>" . $row['sd'] . "</td></tr>"; echo "</table>"; }

希望它有助于