2011-01-07 60 views
0

嘿傢伙, PHP和MySQL newguy在這裏。寫這個php文件,其中顯示相對於URL中所述ID的行的內容(例如,第3行是file.php?id = 3),繼承人來源:http://pastie.org/1437017重定向/回聲if file.php?id = *未找到/不存在

如果我得到了一個id,相對行不存在(例如.php?id = 99999999999999),我需要將其重定向到另一個頁面或echo'FAIL'。我雖然關於使用if命令,但無法弄清楚語法。我也環顧了網絡,但無濟於事。

謝謝你們

+0

您需要檢查並查看結果集是否爲空。如果您的結果集爲空,則重定向。這有幫助嗎? – syrion 2011-01-07 12:39:57

+1

**不要重定向**,但通過使用我之前答案中的函數發出`Header(「HTTP/1.0 404 Not found」);` – 2011-01-07 12:46:52

+0

您可以輕鬆完成它。你有沒有看過答案? – 2011-01-07 12:47:52

回答

3

你有下面這行:

$name=mysql_result($result,$id,"name"); 

如果有id爲$id沒有行,$namefalse。因此,你可以做到以下幾點:

if (!$name) { 
    header('Location: http://yoururl.com'); 
    die(); 
} 

更重要的是將修改查詢到這一點:

$query="SELECT * FROM likes where id=$id"; 

,然後做

if (!$num) { 
    header('Location: http://yoururl.com'); 
    die(); 
} 

其中$num是返回行的數,如現有代碼中所設置的。


編輯由於在這個問題上其他地方所指出,這可能是更好的服務於404 Not Found頁面適當的內容,而不是重定向到另一個頁面。我可以設想一下重定向是否合適的情況,但如果您的重定向頁面顯示「找不到項目」,則這是錯誤的方法。

0

我會重新設計您的查詢的東西

SELECT * FROM table WHERE id = $id;

其中$ id是$ _GET值 - 消毒當然。

如果查詢返回任何結果(mysql_num_rows($result)==1)

那麼你知道一個有效的記錄已被發現。如果沒有,該ID不存在,所以你可以拋出一個錯誤/重定向。

0

mysql_num_rows()爲您提供了選擇中的行數,因此如果該值爲0,則知道沒有任何具有該給定id的行。

if (mysql_num_rows($result)==0){ 
    echo "There are no rows with this id"; 
}else{ 
    // Your normal code 
}