2014-02-11 3 views
0

Это выглядит очень просто, но я не могу заставить его работать по какой-то причине. Это запрос:Update mysql query error

mysql_query("UPDATE `alliance` 
      SET limit=limit+5, bank=bank-".$price." 
      WHERE ID='".$ad['ID']."'"); 

Это ошибка напечатал:

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 'limit=limit+5, bank=bank-10000 WHERE ID='4'' at line 1

Я попытался это пути, а также:

mysql_query("UPDATE alliance SET limit=limit+'5', bank=bank-'".$price."' WHERE ID='".$ad['ID']."'");

mysql_query("UPDATE alliance SET limit=limit+5, bank=bank-".$price." WHERE ID=".$ad['ID']);

Может кто-нибудь, пожалуйста, помогите мне? Это первый раз, когда я зациклился на таком маленьком вопросе.

+0

Поскольку LIMIT является зарезервированным ключевым словом я предлагаю вам обновить вашу таблицу и использовать другое слово. Это сделает ваш код немного чище. Вы можете использовать UPPERLIMIT или, возможно, COUNT ... любое слово, которое, по вашему мнению, имеет значение. – wiredniko

+0

Пожалуйста, ** НЕ используйте ** mysql_query' в новых приложениях. Это устарело, опасно, если вы не будете осторожны, чтобы [надлежащим образом убежать] (http://bobby-tables.com/php) каждое значение, которое вы указали в своем запросе, и удаляется из будущих версий PHP. Современная замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). Руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), описывает рекомендуемые рекомендации. – tadman

+0

Thx, я прочитаю о PDO. – OfirH

ответ

3

LIMIT является MySQL reserved keyword. Так что если вы собираетесь использовать его, вы должны обернуть его в клещах:

mysql_query("UPDATE `alliance` 
     SET `limit`=`limit`+5, bank=bank-".$price." 
     WHERE ID='".$ad['ID']."'"); 
+0

Ничего себе, не передумал! Большое спасибо! – OfirH

+0

И все же вы ставите «альянс» в backticks, хотя он ему не нужен. – Barmar