J'espère ne pas m'éloigner du sujet dans mon premier message, mais j'aimerais élargir un peu sur la conversion d'entier en chaîne de caractères car certains répondants semblent se tromper.
Étant donné que l'expression dans cette requête utilise un opérateur arithmétique (le symbole plus +), MySQL convertira toutes les chaînes de caractères de l'expression en nombres.
Pour illustrer, ce qui suit produira le résultat 6:
SÉLECTIONNER ' 05.05 '+'.95';
La concaténation de chaînes de caractères en MySQL nécessite la fonction CONCAT(), il n'y a donc aucune ambiguïté ici et MySQL convertit les chaînes en nombres décimaux et les additionne.
Je pense en fait que la raison pour laquelle la requête initiale ne fonctionnait pas est très probablement parce que la variable $points n'était pas réellement définie sur les points actuels de l'utilisateur. Elle était soit définie sur zéro, soit non définie : MySQL convertira une chaîne vide en zéro. Pour illustrer, ce qui suit retournera 0:
SÉLECTIONNER ABS('');
Comme je l'ai dit, j'espère ne pas être trop hors sujet. Je suis d'accord avec Daan et Tomas, qui ont les meilleures solutions pour ce problème particulier.
2 votes
J'ai rencontré un problème similaire puis j'ai réalisé que le type par défaut du champ était 'NULL', je l'ai changé en 0 et tout était résolu.