查询表以根据通过php中的url传递的相册ID检索图像信息

时间:2014-01-18 12:49:58

标签: php mysql sql image

请为我的生活,我无法解决我知道的一个简单的问题。我有一个存储相册名称和详细信息的表,另一个表存储图像详细信息,但有一个包含相册ID的字段。我可以检索相册数据。并通过url将专辑ID传递到另一个页面。我需要帮助的是能够查询图像表以根据传递给图像页面的相册ID检索数据。让我们假设在我的图像表中我有一些条目有8作为专辑ID。我想查询图像表以检索具有专辑ID字段为8的所有图像数据。我将非常感谢解决此问题的任何帮助和方向。

以下是我的代码。

相册表

CREATE TABLE `pgalbum` (
  `pgaID` int(12) NOT NULL auto_increment,
  `alname` varchar(250) collate latin1_general_ci default NULL,
  `aldescription` varchar(512) collate latin1_general_ci default NULL,
  `alphoto` varchar(64) collate latin1_general_ci default NULL,
  `aldate` varchar(10) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`pgaID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ;

图片表

CREATE TABLE `photogallery` (
  `pgID` int(12) NOT NULL auto_increment,
  `pgaID` int(12) NOT NULL,
  `description` varchar(512) collate latin1_general_ci default NULL,
  `photo` varchar(128) collate latin1_general_ci default NULL,
  `date` varchar(20) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`pgID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=12 ;

获取图片的功能

function get_images($start=0,$limit=0)
{
   if($start!=0 || $limit!=0)
    { $sql .= " LIMIT ". $start .", ". $limit; }

   $sql .= ";";

   $data = mysql_query($sql);
   mysql_close();
   return $data;
}

图片页面代码

$colname_rspgimage = "-1";
if (isset($_GET['pgaid'])) {
  $colname_rspgimage = $_GET['pgaid'];
}
mysql_select_db($database_connTest, $connTest);
$query_rspgimage = sprintf("SELECT pgID, pgaID, `description`, photo, `date` FROM photogallery WHERE pgaID = %s ORDER BY pgID ASC", GetSQLValueString($colname_rspgimage, "int"));
$rspgimage = mysql_query($query_rspgimage, $connTest) or die(mysql_error());
$row_rspgimage = mysql_fetch_assoc($rspgimage);
$totalRows_rspgimage = mysql_num_rows($rspgimage);


$getImages = $rspgimage;

$getImages = get_images($start,$limit);
if ($getImages && mysql_num_rows($getImages) > 0)
    {
        /* Pagination section2 */
        $getAllImages = get_images();
        $total_items = mysql_num_rows($getAllImages);
        $paginate = paginate($targetpage,$total_items,$limit,$pagenum);
        $paginate = trim($paginate);
        /* Pagination section2 End */
        if ($totalRows_rspgimage > 0) {
            echo '<table border="0" cellpadding="15" cellspacing="4">';
            $countRows = mysql_num_rows($getImages);
            $i = 0;
            if ($countRows > 0)
                {
                    while ($row_rspgimage = mysql_fetch_assoc($getImages))
                        {
                            if ($i % 4 == 0) echo '<tr>';
                            echo '<td valign="top">
                                    <a class="thumb2" href="admin/photogallery/'.$row_rspgimage['photo'].' " rel="lightbox"><img src="admin/photogallery/'.$row_rspgimage['photo'].'" border="0" width="190"/></a>
                                    <div class="clear_4"></div>
                                  </td>';
                            if ($i == $countRows - 1)
                                echo '</tr>';
                            $i++;
                        }
                }
            echo '</table>'; } // Show if recordset empty

        $output .= $paginate;
    }
echo $output;
?>

1 个答案:

答案 0 :(得分:2)

我错过了什么吗?它只是:

SELECT *
FROM photogallery
WHERE album_id = 8

如果相册ID是参数,请将8替换为相应的参数变量。

我没有看到您需要JOIN的任何理由,因为您没有使用pgalbum表中的任何内容。专辑ID在photogallery表中作为外键提供。

SELECT photogallery.pgID, photogallery.pgaID, photogallery.description, photogallery.photo, photogallery.date 
FROM photogallery
WHERE pgaID = 8
ORDER BY pgID