请帮我解决指定的问题:
代码部分:
$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,
UNIX_TIMESTAMP(throughdate) AS throughdate FROM events where
id='$_GET[id]' ORDER BY eventdate");
// the above query is not working
if (! $result) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
if ( mysql_num_rows($result) == 0 ) {
print "<p>No events right now.</p>\n";
}
else {
$lasteventmonth = '';
while ($row = mysql_fetch_array($result)) {
$eventmonth="";
$eventmonth = date("F Y",$row['eventdate']);
if ($lasteventmonth != $eventmonth) {
print "<p style='font-size: 18px;'><b>$eventmonth</b></p>";
}
$lasteventmonth = $eventmonth;
showEvent($row);
}
}
?>
........................
........................//other codes
当代码评估如下: 现在没有事件。
但是特定的id存在于数据库中,如果$ _GET ['id']在页面中回显,则显示该值。
答案 0 :(得分:1)
开始时id
中的id='$_GET[id]'
是什么?
如果您有查询http:// ... ?id=123
,我会将id放在引号中。话虽如此,更好的是这样:
$id = mysql_real_escape_string($_GET['id']); // safe against SQL injection
$sql = "SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, UNIX_TIMESTAMP(throughdate) AS throughdate FROM events where id='$id' ORDER BY eventdate";
$result = mysql_query($sql);
如果仍然遇到问题,请在查询运行之前使用echo检查变量$ id和$ result;那么你就会清楚地知道它为什么没有运行你期望的查询。
答案 1 :(得分:-3)
我确信id=$_GET[id]
正在检查一个int与一个int,在那里你检查一个int与一个字符串。删除$_GET['id']
周围的单引号,然后重试。单引号将其定义为字符串而不是int。