2010-04-22 3 views
0

J'utilise le script pawn pour quelque chose, et tout fonctionne bien, sauf pour l'une de mes requêtes. Pour une raison ou pour une autre, ça ne marchera pas, et j'espère que c'est assez simple que quelqu'un puisse repérer mon erreur alors que je me suis cogné la tête pendant des jours.La mise à jour de la requête SQL ne fonctionne pas

http://ampaste.net/m6a887d30

Les deux lignes sont mises en évidence les requêtes qui ne fonctionnent pas. L'autre fonctionne bien, mais les valeurs de 'class1kills' et 'class2kills' restent à 0. Voici une capture d'écran de phpmyadmin incase J'ai fait quelque chose de stupide.

http://brutalservers.net/sql.png

+0

Juste à noter, query1 fonctionne bien et se met à jour parfaitement, c'est pourquoi j'ai beaucoup de mal à comprendre ce qui ne va pas avec celui-ci. –

+1

Veuillez inclure les questions pertinentes dans la question – Andomar

+0

Veuillez publier les structures de table tel que rapporté par MySQL. En outre, je ne peux pas m'empêcher de noter que «global» n'est peut-être pas le meilleur nom pour une table, même si ce n'est pas un mot réservé à MySQL. –

Répondre

1

SQL-code, copié où vous l'avez collé:

UPDATE global SET class1kills = class1kills + 1 

En plus de ce que l'utilisateur Marcus a dit, même s'il y a une ligne dans la table, mais sa valeur est NULL, puis en ajoutant à la valeur ne fonctionnera pas. Vous devrez le régler sur une valeur entière d'abord, comme 0.

.: par exemple

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 | 
+------+ 

La valeur NULL est pas mis à jour! Par ailleurs, êtes-vous sûr de vouloir mettre à jour le tableau complet?

+0

Je pense que cela pourrait être la clé, voici la requête que j'utilise pour créer la table à partir du code. Format (requête, 1024, «CREATE TABLE SI NOT EXISTS global (' class1kills' INT (20) unsigned NOT NULL DEFAUT '0', 'class2kills' INT (20) unsigned NOT NULL DEFAULT '0')"); N'est-ce pas le régler à 0, pas NULL? Et oui, si vous regardez ma capture d'écran, il s'agit essentiellement d'un moyen de garder une trace du nombre total de victimes pour une classe par rapport au nombre total de victimes pour une autre classe. La table a-t-elle été créée correctement à partir de cette requête? –

0

est-cas MySQL sensible quand il vient à la comparaison des chaînes? Sinon, vérifiez les encodages, etc. C'est tout ce que je peux penser.

+0

Le classement par défaut 'latin1_swedish_ci' n'est pas sensible à la casse. –

+0

Il est sensible à la casse sur les chaînes binaires ou si vous utilisez =. 'LIKE' est insensible. – Duncan

1

Essayez d'insérer une ligne dans global, puis de la mettre à jour.

Notez que sans une clause WHERE sur votre instruction UPDATE, toutes les lignes seront mises à jour.

0

Désolé les gars, il s'avère que c'est un bug avec le langage de script. Pour une raison quelconque, deux requêtes l'une après l'autre ne permettent pas d'appeler le second correctement.

Merci à tous pour votre aide!

Questions connexes