0

我一直在做一个画廊项目,但我遇到了这个错误。例如,基本上当用户访问 image.php?id=37 时,它会从行 id 等于 url 参数的图像表中检索所有行信息。对于要检索的实际图像 url、画廊 ID 和图像 ID,所有这些都运行良好。我现在正在尝试将描述合并到此页面中,该页面也是从图像表中检索的。我已经继续添加列,输入了一些测试描述并将代码添加到我的 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 以回显描述。我的表有必要的额外列,我看不出发生了什么。这可能只是一个简单的错误,但我在语法中看不到错误。任何帮助将不胜感激,谢谢!

4

2 回答 2

1

The other option if you don't want to delimit your columns with backticks around your query is to supply an alias on the table, eg

SELECT  i.id,
        i.url, 
        i.gallery,
        i.desc
FROM    images i
WHERE   id = $id
于 2013-03-09T15:28:21.590 回答
1

desc是 SQL 中的关键字。需要用引号括起来。IE

SELECT 
    id,
    url, 
    gallery,
    `desc`
FROM images
WHERE id = $id
于 2013-03-09T15:25:26.503 回答