2011-07-03 81 views
0

我正在處理以下代碼,它是從數據庫中提取信息的。get url無法正常工作

這就是我想要的代碼來完成:

  • 用戶登錄
  • 如果圖像屬於用戶,數據庫查詢僅此形象要求,並發現該查詢後屬於用戶的必須出現。
  • 如果請求的圖像編號不屬於該用戶,該頁面必須有錯誤輸出或重定向。

這是代碼:

$id = mysql_real_escape_string(@$_GET['uid']); // get user ref # 
$imgid = mysql_real_escape_string(@$_GET['img']); // get img ref # 
$query = mysql_query("SELECT mypage.*, img.* 
         FROM img 
         JOIN mypage ON img.user = mypage.user WHERE mypage.id = '$id'"); 

if ((mysql_num_rows($query) == 0)) {  
    header("location:page.php?uid=$id");  
    die(mysql_error()); 
} else { 
    while($rows = mysql_fetch_array($query)) { 
    $img = $rows['img']; 
    $pfname = $rows['pfname']; 
    $plname = $rows['plname']; 
    $puser = $rows['puser']; 
    $description = $rows['description']; 
    $ppid_image_name = $rows['ppid_image_name']; 
    } 

當我運行代碼,我能打印出正確的結果。問題是get URL部分。

假設網址是http://www/profile.php?uid=5&img=4... img = 4,引用的圖片屬於用戶,所以是的,這個圖片在調用時顯示。
如果img = 5,這個引用的圖像不屬於,但它顯示在用戶下,但不是當我查詢結果。
如果img = 12,在數據庫中不存在的ref圖像編號,我得到一個錯誤而不是重定向。

我似乎主要有問題的網址的爭奪部分。 &img=ref#

我不確定問題出在這裏:if ((mysql_num_rows($query)==0))。 我試過if ((mysql_num_rows($query)!=imgid)) redirect,這不起作用。

我在做什麼錯?

回答

0

1)。在你的查詢時出現錯誤,使用左加入,而不是加入

mysql_query("SELECT mypage.*, img.* 
         FROM img 
         LEFT JOIN mypage ON img.user = mypage.user WHERE mypage.id = '$id'"); 

2)測試此:

while($rows = mysql_fetch_array($query)) { 
    $img = $rows['img']; 
    $pfname = $rows['pfname']; 
    $plname = $rows['plname']; 
    $puser = $rows['puser']; 
    $description = $rows['description']; 
    $ppid_image_name = $rows['ppid_image_name']; 
} 
if (!isset($img)) {  
    header("location:page.php?uid=$id");  
    die(mysql_error()); 
+0

。感謝您的幫助,但是當它試圖扔掉結果,如果用戶沒有img它不會顯示他們的名字 – user621799

+0

我把$ img例如!替換它的字段什麼都有一個有效的值! –

+0

我試過,確定即時嘗試保持它簡單 – user621799