行检索错误

时间:2013-03-09 15:23:27

标签: php mysql

我一直在做一个画廊项目,我已经停止了这个错误。基本上,当用户访问image.php?id = 37时,它会从images表中检索行id等于url参数的所有行信息。所有这一切都适用于检索的实际图像URL,图库ID和图像ID。我现在正在尝试将描述合并到此页面中,该描述也是从images表中检索的。我已经继续并添加了专栏,输入了一些测试说明,并将代码添加到我的PHP页面,因为我在过去几天一直在成功地做了这个错误:

无法运行查询:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中出错;检查与MySQL服务器版本对应的手册,以便在第5行“desc FROM images WHERE id = 37”附近使用正确的语法

我没有看到出现了什么问题,因为没有任何事情与过去的尝试不同:L。

我的image.php页面:

<?php foreach($rows as $row): ?> 
    <div class="image" style="background: url('resources/galleries/images/<?php echo htmlentities($row['url'], ENT_QUOTES, 'UTF-8'); ?>') no-repeat; background-size: 100%; ">
        <? if(empty($_SESSION['user'])) { } else { print '<div class="image-overlay"><a href="admin/includes/delete-img.php?id=' . $galname . '">Delete</a></div>';}?>
    </div>
    <div class="image-info">
        <a href="gallery.php?id=<?php echo htmlentities($row['gallery'], ENT_QUOTES, 'UTF-8'); ?>">&larr; Back to Gallery</a>
        <p class="desc"><? echo htmlentities($row['desc'], ENT_QUOTES, 'UTF-8'); ?></p>
    </div>
<?php endforeach; ?>    

查询$ id = $ _GET ['id'];:

$query = " 
    SELECT 
        id,
        url, 
        gallery,
        desc
    FROM images
    WHERE id = $id
"; 

唯一的变化是在查询中添加了desc,并添加了PHP来回显描述。我的表有额外的列,我不知道发生了什么。这可能只是一个简单的错误,但我无法在语法中看到错误。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

desc是SQL中的关键字。需要将其括在引号中。即

SELECT 
    id,
    url, 
    gallery,
    `desc`
FROM images
WHERE id = $id

答案 1 :(得分:1)

另一个选项是,如果您不想在查询周围使用反引号来划分列,则可以在表格中提供别名,例如

SELECT  i.id,
        i.url, 
        i.gallery,
        i.desc
FROM    images i
WHERE   id = $id