让网址无法正常工作

时间:2011-07-03 05:12:27

标签: php mysql

我正在处理以下从数据库中提取信息的代码。

这就是我想要的代码:

  • 用户登录。
  • 如果图像属于用户,则在查询数据库后,只显示由用户查询请求和找到的此图像必须显示。
  • 如果请求的图像编号不属于用户,则页面必须出错或重定向。

这是代码:

$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'];
  } 

当我运行代码时,我能够打印出正确的结果。问题是获取URL部分。

假设网址为http://www/profile.php?uid=5&img=4... img = 4,引用的图片属于用户,是的,此图片会在通话时显示。
如果img = 5,则此引用的图像不属于但是它显示在用户下方,但在查询结果时不显示。
如果img = 12,数据库中不存在的参考图像编号,则会出现错误而不是重定向。

我似乎主要遇到网址的主机部分问题。 &img=ref#

我不确定问题是否在这里:if ((mysql_num_rows($query)==0))。 我试过if ((mysql_num_rows($query)!=imgid)) redirect,但这不起作用。

我做错了什么?

1 个答案:

答案 0 :(得分: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());