请为我的生活,我无法解决我知道的一个简单的问题。我有一个存储相册名称和详细信息的表,另一个表存储图像详细信息,但有一个包含相册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;
?>
答案 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