-1

指定された問題に関して私を助けてください:

コード セクション:

$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,    
  UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where 
  id='$_GET[id];'");

// the above query is not working   

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

コードが次のように評価される場合:

警告: mysql_num_rows(): 指定された引数は、C:\Users\Fagun\Desktop\UsbWebserver\Root\mapcal\mapcal.php の有効な MySQL 結果リソースではありません 122 行目 現在イベントはありません.++++++++

4

7 に答える 7

3

への呼び出しの後、mysql_queryこれを使用します。

if (! $result) {
    echo mysql_errno() . ": " . mysql_error(). "\n";
}

これにより、MySQL がクエリを実行しない理由が正確にわかります。

于 2012-04-21T16:31:43.147 に答える
0

これを試して

 $result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,    
 UNIX_TIMESTAMP(throughdate) AS throughdate FROM events where 
 id='".$_GET['id']."' ORDER BY eventdate");
于 2012-04-21T16:35:58.777 に答える
0

値を適切に引用する:

$_GET[id] する必要があります$_GET['id']

以下を試してください:

$result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,    
  UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where 
  id='".$_GET['id']."');
于 2012-04-21T16:36:18.387 に答える
0

これを試して:

"SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate, 
    UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where 
    id='".$_GET['id'].";'"

ユーザー入力によるものでidないと思います。存在する場合、これは SQL インジェクション攻撃に対して脆弱です。

于 2012-04-21T16:37:23.053 に答える
0

ID は String または int ですか? いずれにせよ、末尾にセミコロンを含めるべきではないと思いますか?

次のように変更してみてください... $result = mysql_query("SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,
UNIX_TIMESTAMP(throughdate) AS throughdate FROM events ORDER BY eventdate where id='$_GET[id]'");

于 2012-04-21T16:32:33.520 に答える
0

クエリを作成してIDを連結する方法に問題があると思います。代わりにこれを試してください (ID がどのように連結されているかに注意してください):

$query = "SELECT *, UNIX_TIMESTAMP(eventdate) AS eventdate,    
    UNIX_TIMESTAMP(throughdate) AS throughdate FROM events
    ORDER BY eventdate where 
    id='".$_GET[id]."'";

$result = mysql_query($query) or die(mysql_error());

2 つの部分に分割する必要はありませんが、この方が読みやすく理解しやすいはずです。クエリを実行する前にエコーアウトして、実際に作成されているクエリを確認し、データベースで手動で試すこともできます。

またはdie(mysql_error())の部分は、問題の詳細を示します (ID の問題ではない場合)。

于 2012-04-21T16:33:48.420 に答える
0

試す:

$result = mysql_query("SELECT   *,
                                UNIX_TIMESTAMP(eventdate) AS eventdate,    
                                UNIX_TIMESTAMP(throughdate) AS throughdate
                       FROM     events
                       ORDER BY eventdate
                       where    id= '" . intval($_GET['id']) . "'");

if($result)
{
    //Do code
}

$_GET['id']が整数であることを確認するには、intval() を使用します。
if ステートメントを使用して、クエリが正しく実行されたことを確認します。

于 2012-04-21T16:33:52.707 に答える