muaythai075
@muaythai075
Дизайнер

Как исправить ошибку в php?

При выборке записей из базы выдает вот такую ошибку:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc,date,author,mini_img,view FROM data WHERE cat='1'' at line 1

Где ошибка не понимаю

<?php 
		
echo $myrow["text"];
		
$result = mysql_query("SELECT id,title,desc,date,author,mini_img,view FROM data WHERE cat='$cat'", $db);

if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору info@site.ru. <br>Код ошибки:</p>";
exit(mysql_error());
}

if (mysql_num_rows($result) > 0)
{
	$myrow = mysql_fetch_array($result);

	do
	{
	printf ("<table border='0'>
            			<tr>
            				<td>
								<p><a href='view_post.php?id=%s'>%s</a></p>
								<p>Дата добавления: %s</p>
								<p>Автор: %s</p>
							</td>
            			</tr>
						
            			<tr>
              				<td>%s<br>Просмотров: %s</td>
            			</tr>
          			</table><br><br>", $myrow['id'], $myrow['title'], $myrow['date'], $myrow['author'], $myrow['desc'], $myrow['view']);
	}
	while ($myrow = mysql_fetch_array($result));
}

else
{
	echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей</p>";	
	exit();
}
		
?>
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
на desc у Вас ругается. Лучше всего поменяйте на descr(и в таблице, и в запросе), чтобы не парится с экранированием. Ну а совет выкинуть книгу и перестать использовать mysql_ - 100% в яблочко.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
не используйте служебные слова в качестве названий таблиц, полей..
в данном случае desc
Ответ написан
Комментировать
@Memorivardo
Подобные ошибки чаще всего связаны с неверным формированием запроса. Конкретно в Вашем случае, ошибка скорее всего вызвана тем, что в запросе присутствуют слова "desc", "date" и "view", которые являются ключевыми для MySQL. Вы можете заэкранировать их используя косые кавычки: `desc`, `date`,`view` и т.д.

А вобще лучше сразу в сторону какого-нибудь PDO смотрите, там вопросы по экранированию за Вас продумали и с инъекциями в будущем будет проблем чуточку поменьше. Вот здесь вроде бы неплохо расписано всё по нему: phpfaq.ru/pdo
Ответ написан
65536
@65536
Напишите об этом администратору info@site.ru
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы