-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=123id を引用符で囲みます。そうは言っても、次のようにすると良いでしょう:

$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 と string をチェックしていると確信しています。前後の一重引用符を削除して、$_GET['id']やり直してください。一重引用符は、int ではなく文字列として定義します。

于 2012-04-22T10:00:29.457 に答える