2010-04-22 5 views
0

Я использую скрипт для пешки для чего-то, и все отлично работает, за исключением одного из моих запросов. По какой-то причине это не сработает, и я надеюсь, что он достаточно прост, и кто-то может заметить мою ошибку, поскольку я несколько дней стучал головой о нее.SQL Query Update не работает

http://ampaste.net/m6a887d30

Две выделенные строки являются запросы, которые не работают. Другой работает отлично, но значения для «class1kills» и «class2kills» остаются равными 0. Вот скриншот из phpmyadmin incase, я сделал что-то глупое.

http://brutalservers.net/sql.png

+0

Просто обратите внимание, что запрос1 отлично работает и обновляется отлично, поэтому у меня так много проблем, когда выясняется, что не так с этим. – 2010-04-22 20:27:31

+1

Пожалуйста, включите соответствующие вопросы в вопрос – Andomar

+0

Пожалуйста, разместите структуры таблиц, как сообщается MySQL. Кроме того, я не могу не отметить, что «глобальное», возможно, не лучшее имя для таблицы, даже если это не зарезервированное слово MySQL. –

ответ

1

Ваш SQL-код, скопированный с которой вы вставили его:

UPDATE global SET class1kills = class1kills + 1 

В дополнение к тому, что пользователь сказал Маркус, даже если есть строка в таблице, но это значение равно NULL, то при добавлении значение не будет работать. Вы должны установить его в целое значение первого, например, 0.

т.д .:

mysql> create table mytable(a int); 
mysql> insert into mytable(a) values (0),(NULL); 
mysql> select * from mytable; 

+------+ 
| a | 
+------+ 
| 0 | 
| NULL | 
+------+ 

mysql> update mytable set a = a+1; 

mysql> select * from mytable; 

+------+ 
| a | 
+------+ 
| 1 | 
| NULL | 
+------+ 

Значение NULL было не обновляется!

Кстати, вы уверены, что хотите обновить полную таблицу?

+0

Я думаю, что это может быть ключом, вот запрос, который я использую, чтобы создать таблицу из кода. Формат (запрос, 1024, "CREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ global (' class1kills' INT (20) unsigned NOT NULL DEFAULT '0', 'class2kills' INT (20) unsigned NOT NULL DEFAULT '0')"); Разве это не значение 0, а не NULL? И да, если вы посмотрите на мой скриншот, это в основном просто способ отслеживания полных убийств за один класс против полных убийств для другого класса. Итак, правильно ли создана таблица из этого запроса? – 2010-04-22 21:30:34

0

Является ли случай MySQL чувствителен, когда дело доходит до сравнения строк? В противном случае проверьте кодировки и т. Д. Это все, о чем я могу думать.

+0

Default collation 'latin1_swedish_ci' не чувствителен к регистру. –

+0

Он чувствителен к регистру в двоичных строках или используется =. 'LIKE' нечувствителен. – Duncan

1

Попробуйте вставить строку в глобальную, а затем обновите ее.

Обратите внимание, что без предложения WHERE в вашем заявлении UPDATE все строки будут обновлены.

0

Извините, ребята, оказывается, это ошибка со сценарием. По какой-то причине два запроса сразу после друг друга заставляют второго не называть должным образом.

Спасибо всем за помощь!