我认为这是一个直截了当的查询,但我似乎无法让它发挥作用。所有帮助表示赞赏!
表:
涉及两个表:gallery_meta
和prm_album
。 The gallery_meta
tbl包含存储在文件结构中的图像的数据。 prm_album
tbl只是将相册ID与相册常规文本名称对齐。对于这两个tbl,查询中使用的字段名称都是正确的。
查询:
在下面的代码中,我首先获得一系列已保存的相册名称。然后我检查文件结构以查看哪些目录实际包含图像。此时,我想再次查询数据库,查找每个返回为正数的专辑的缩略图。在这里,过程失败了。
我得到的只是一个白色屏幕,没有任何错误报告。数组$albums
已成功填充,$id
变量将传递给$q
查询。 $pattern
只是存储相册目录的父目录的文件路径。
//Get album names from db
$albums = array();
$q="SELECT ID, Name FROM prm_album WHERE 1";
$sql=mysql_query($q) or die(mysql_error());
while($r=mysql_fetch_array($sql)) {
$album = $r['Name'];
$album_dir = $pattern.$album.'/';
//check which albums actually contain images (dividing to account for thumbs, med, lrg.)
$filecount = count(glob($album_dir.'*'))/3;
//if images found, put album in array
if($filecount >= 1) {
$albums[ $r['ID'] ] = $filecount;
}
}
foreach($albums as $id => $filecount) {
$q="SELECT m.AlbumID, m.FileName, m.FileExt,
m.LegacyName, m.IsDefault,
p.Name
FROM gallery_meta AS m
LEFT JOIN prm_album AS p
ON m.AlbumID = p.ID
WHERE m.AlbumID = $id
AND Public = 1
ORDER BY IsDefault DESC
LIMIT 0,1";
$sql=mysql_query($q) or die(mysql_error());
while($r=mysql_fetch_array($sql)) {
$album=$r['Name'].'/';
$legacyname=$r['LegacyName'];
$filename=$r['FileName'].'-sm.';
$ext=$r['FileExt'];
echo '<img src="'$pattern.$album.$filename.$ext.'" />'.$legacyname.'<br/>';
}
}
答案 0 :(得分:0)
几个点$ {id}可以用字符串形式编写,也许需要\“$ {id} \” 但更有可能 将所有$ q字符串放在PHP代码中的一行上,或者解析器解释器可以跳过其中的换行符,当然sql也会。
$q="SELECT m.AlbumID, m.FileName, m.FileExt, m.LegacyName, m.IsDefault, p.Name FROM gallery_meta AS m LEFT JOIN prm_album AS p ON m.AlbumID = p.ID WHERE m.AlbumID = $id AND Public = 1 ORDER BY IsDefault DESC LIMIT 0,1";
您应该能够首先在命令行上测试数据库(智慧)。
答案 1 :(得分:0)
更改
echo '<img src="'$pattern.$album.$filename.$ext.'" />'.$legacyname.'<br/>';
到
echo '<img src="'.$pattern.$album.$filename.$ext.'" />'.$legacyname.'<br/>';
第一个点丢失了。并始终将这些行设置在您的脚本之上=)
ini_set('display_errors', 1);
error_reporting(E_ALL);