2011-07-03 80 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