首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL更新查询中的增量值

MySQL更新查询中的增量值
EN

Stack Overflow用户
提问于 2010-02-14 05:37:20
回答 10查看 301.3K关注 0票数 159

我写了这段代码来给出+1分,但它不能正常工作。

代码语言:javascript
运行
复制
mysql_query("
    UPDATE member_profile 
    SET points= ' ".$points." ' + 1 
    WHERE user_id = '".$userid."'
");

$points变量现在是用户的点数。我想让它再加一个。例如,如果他有5个点,它应该是5+1 = 6,但它不是,它只是变成了1。

我做错了什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-02-14 05:40:53

你也可以这样做:

代码语言:javascript
运行
复制
mysql_query("
    UPDATE member_profile 
    SET points = points + 1
    WHERE user_id = '".$userid."'
");
票数 368
EN

Stack Overflow用户

发布于 2010-02-14 05:40:36

您可以在不必查询实际点数的情况下执行此操作,因此它将在脚本执行期间为您节省一些时间和资源。

代码语言:javascript
运行
复制
mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'");

否则,您所做的错误是将旧的点数作为字符串(points='5'+1)传递,并且不能将数字添加到字符串中。;)

票数 24
EN

Stack Overflow用户

发布于 2010-02-14 06:40:27

希望我不会在我的第一篇文章中离题,但我想在整数到字符串的转换上做一点扩展,因为一些受访者似乎错了。

因为此查询中的表达式使用算术运算符(加号+),所以MySQL会将表达式中的任何字符串转换为数字。

为了演示,以下内容将产生结果6:

代码语言:javascript
运行
复制
SELECT ' 05.05 '+'.95';

MySQL中的字符串连接需要CONCAT()函数,因此这里没有歧义,MySQL将字符串转换为浮点数并将它们相加在一起。

实际上,我认为初始查询不起作用的原因很可能是因为$points变量实际上没有设置为用户的当前点。它要么被设置为零,要么被取消设置: MySQL会将一个空字符串转换为零。为了便于说明,下面将返回0:

代码语言:javascript
运行
复制
SELECT ABS('');

就像我说的,我希望我没有太离题。我同意Daan和Tomas对这个问题有最好的解决方案。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2259155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档