-1

请帮助我解决指定的问题:

代码部分:

 $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'] 在页面中回显,则显示该值。

4

2 回答 2

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;那么您将更清楚地知道为什么它没有运行您期望的查询。

于 2012-04-22T10:50:37.543 回答
-3

我确信id=$_GET[id]正在检查一个 int 与一个 int ,在那里你检查一个 int 与一个字符串。删除周围的单引号,$_GET['id']然后重试。单引号将其定义为字符串而不是 int。

于 2012-04-22T10:00:29.457 回答