2012-07-02 4 views
0

У меня есть эта часть кода:Mysql ошибка UPDATE, почему

$result = mysql_query("SELECT * FROM posts WHERE id = '$id'") or die (mysql_error()); 
$rec = mysql_fetch_array($result) or die (mysql_error()); 
$like = $rec['like']; 
$like += 1; 
mysql_query("UPDATE posts SET like = '$like' WHERE id = '$id'") or die (mysql_error()); 

и возвращать ошибку:

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 'like = '1' WHERE id = '43'' at line 1"

+0

РНР 'внутр/mysql' (' mysql_ * 'семья) является [устаревшее] (HTTP://www.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated). Вместо этого используйте [что-то еще] (http://www.php.net/manual/en/mysqlinfo.api.choosing.php). – pilcrow

ответ

4

LIKE - зарезервированное ключевое слово MySQL. Quote ваши имена столбцов, чтобы избежать принимая их по ключевым словам:

... SET `like` = ... 
1

Вы используете зарезервированное ключевое слово LIKE

попробовать это следующим образом:

"UPDATE `posts` SET `like` = '$like' WHERE `id` = '$id'" 
0

Ваша проблема заключается в том, что нравится это MySQL ключевое слово, либо изменить имя столбца в базе данных или окружит обратные кавычки.

DonT Кроме того, использование mysql_ функции используют MySQLi или PDO как то, что у вас есть не безопасно и устаревшее

0

«как» это reserved word, не рекомендуется использовать его для столбцов имен. Если это не возможно для вас, чтобы переименовать столбец, измените UPDATE заявление, убегая его backticks:

`like`