我一直在做一个画廊项目,我已经停止了这个错误。基本上,当用户访问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'); ?>">← 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来回显描述。我的表有额外的列,我不知道发生了什么。这可能只是一个简单的错误,但我无法在语法中看到错误。非常感谢任何帮助,谢谢!
答案 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