我正在调整我通过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);
?>
这样可以正常工作,即我的数据库中的表格填充正确。
然而,应该在网页上生成表以显示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表中有数据,我也总是得到“没有结果!”当我浏览页面时显示。
任何人都可以看到问题所在吗?
答案 0 :(得分:1)
我在您的查询中可以看到的一件事是date
是一个保留字。
你需要在反引号中包装它:
"SELECT id, Name, Page, DATE_FORMAT(`date`, '%d %M, %Y')....
或重命名该列。
这可能会在您的查询中出现错误,即使trigger_error()
建议您仍未看到错误:您的服务器上可能已关闭错误报告。这是生产环境中的正确行为,因为您不希望用户看到错误消息。但是,在开发过程中,您可以激活错误报告以查看错误。
答案 1 :(得分:1)
也许你在logs.php中没有数据库连接?如果您的代码是完整文件,那么这应该是问题所在。 如果是这样,只需在页面顶部包含config.php。
答案 2 :(得分: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>
"; }
希望有所帮助