我写了这段代码来给出+1分,但它不能正常工作。
mysql_query("
UPDATE member_profile
SET points= ' ".$points." ' + 1
WHERE user_id = '".$userid."'
");$points变量现在是用户的点数。我想让它再加一个。例如,如果他有5个点,它应该是5+1 = 6,但它不是,它只是变成了1。
我做错了什么?
发布于 2010-02-14 05:40:53
你也可以这样做:
mysql_query("
UPDATE member_profile
SET points = points + 1
WHERE user_id = '".$userid."'
");发布于 2010-02-14 05:40:36
您可以在不必查询实际点数的情况下执行此操作,因此它将在脚本执行期间为您节省一些时间和资源。
mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'");否则,您所做的错误是将旧的点数作为字符串(points='5'+1)传递,并且不能将数字添加到字符串中。;)
发布于 2010-02-14 06:40:27
希望我不会在我的第一篇文章中离题,但我想在整数到字符串的转换上做一点扩展,因为一些受访者似乎错了。
因为此查询中的表达式使用算术运算符(加号+),所以MySQL会将表达式中的任何字符串转换为数字。
为了演示,以下内容将产生结果6:
SELECT ' 05.05 '+'.95';MySQL中的字符串连接需要CONCAT()函数,因此这里没有歧义,MySQL将字符串转换为浮点数并将它们相加在一起。
实际上,我认为初始查询不起作用的原因很可能是因为$points变量实际上没有设置为用户的当前点。它要么被设置为零,要么被取消设置: MySQL会将一个空字符串转换为零。为了便于说明,下面将返回0:
SELECT ABS('');就像我说的,我希望我没有太离题。我同意Daan和Tomas对这个问题有最好的解决方案。
https://stackoverflow.com/questions/2259155
复制相似问题