我有我认为是一个简单的查询,但我似乎无法让它工作。所有帮助赞赏!PHP MySQL:疑难解答查询
的表:
有两个表涉及:gallery_meta
和prm_album
。 The gallery_meta
tbl包含存储在文件结构中的图像的数据。 prm_album
tbl只是将专辑ID与专辑常规文字名称对齐。对于这两个tbls,查询中使用的字段名称都是正确的。
查询:
在下面的代码,我首先得到保存专辑名称的数组。然后我检查文件结构以查看哪些目录实际上包含图像。在这一点上,我想再次查询数据库为每个专辑返回的正面缩略图。这个过程失败了。
我所得到的只是一个白屏,没有任何错误报告。数组$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/>';
}
}
您有'error_reporting'打开并且'display_errors'打开了吗?我在你的代码中看到的唯一输出是'echo' 2012-07-15 22:54:36
您是否在MySQL客户端中测试了您的查询以确认它确实返回了一行? – 2012-07-15 22:56:37
@Michael在PHP MyAdmin控制台尝试它 - 工作正常。我真的不能看到它有什么问题。如果我在foreach语句中删除查询,则页面处理没有问题。随着查询 - 白色屏幕。即使有'error_reporting(E_ALL);'! – Eamonn 2012-07-15 23:05:23