eprivalov
@eprivalov
Учусь

Как победить ошибку «You have an error in your SQL syntax» в MySQL?

<?php
	// Если нажали кнопку "Сохранить"
	if (isset($_POST['save'])) {
		$title = $_POST['title'];
		$description = $_POST['description'];
		$description1 = $_POST['description1'];
		$keywords = $_POST['keywords'];
		$price = $_POST['price'];
		$cost = $_POST['cost'];
		$quantity = $_POST['quantity'];
		$cnc = $_POST['cnc'];
		$text = $_POST['text'];
		$category = intval($_POST['category']);
		$images = $_POST['image'];

		$query = "UPDATE products SET title = $title, description = $description, description1 = $description1, keywords = $keywords,
										price = $price, cost = $cost, quantity = $quantity, cnc = $cnc, `text` = $text, category = $category WHERE id = $id";
		$result = mysql_query($query) or die(mysql_error());
	}

?>

Когда выкладываю этот код - возникает вот такая ошибка MySQL:
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 'ПОСТЕЛЬНОГО БЕЛЬЯ № 01, description = Материал: бяз' at line 1

В чем проблема?
  • Вопрос задан
  • 2933 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
1. Не используйте mysql_, он в статусе depricated. Используйте mysqli или PDO.
2. Любые строки в запросе SQL должны быть взяты в кавычки. Вы пытаетесь сравнить колонку `title` с колонкой `ПОСТЕЛЬНОГО`.
3. Не используйте запросы, собранные из переданных извне строк. Что будет, если в $_POST['title'] передать строку "';DROP TABLE products;--"? Вместо этого используйте параметризацию запросов через bind_param.
4. Не ленитесь читать вопросы, которые задавали до вас. Точно такой же вопрос был всего пару часов назад.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Slko
C++/C#/Python Developer
Ответ написан
Комментировать
@IntenT
в кавычках
Ответ написан
Что касается самого вопроса, надо бы все передаваемые значения в кавычки взять.
Что могу еще добавить — переходите хотя бы на mysqli. mysql-функции в PHP уже давно deprecated.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы