2013-03-09 1 views
0

Я работаю над проектом галереи, и я пришел к этому с ошибкой. В основном, когда пользователь посещает image.php? Id = 37, например, он извлекает всю информацию о строках из таблицы изображений, где идентификатор строки равен параметру url. Все это сработало так же, как и фактический URL-адрес изображения, идентификатор галереи и идентификатор изображения. Теперь я пытаюсь включить описание на эту страницу, которое также извлекается из таблицы изображений. Я пошел дальше и добавил столбец, ввел несколько описаний тестов и добавил код на мою страницу PHP, поскольку я успешно выполнял последние несколько дней, и я получаю эту ошибку:Ошибка поиска строки

Не удалось выполнить запрос: SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «desc FROM images WHERE id = 37» по строке 5

Я не вижу, что пошло не так, поскольку ничего не вышло из-за того, попытки: 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 для эха описания. В моей таблице есть дополнительная колонка, и я не вижу, что произошло. Это может быть просто ошибка, но я не вижу ошибки в синтаксисе. Любая помощь будет очень признательна, спасибо!

ответ

1

desc - ключевое слово в SQL. Необходимо заключить его в кавычки. т.е.

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

Все работает в настоящее время, спасибо! Все еще возиться с MySQL, поэтому мне придется иметь более глубокий взгляд на вещи. – 2013-03-09 15:29:18

1

Другой вариант, если вы не хотите, чтобы разграничить столбцы с обратными кавычками вокруг вашего запроса, чтобы указать псевдоним на столе, например,

SELECT i.id, 
     i.url, 
     i.gallery, 
     i.desc 
FROM images i 
WHERE id = $id 
Смежные вопросы