在MySQL更新查询中增加值
我已经给出了这个代码+1点,但它不能正常工作。
mysql_query(" UPDATE member_profile SET points= ' ".$points." ' + 1 WHERE user_id = '".$userid."' ");
$ pointsvariables是用户的分数现在..我想要它加上一个..所以例如,如果他有5点,应该是5 + 1 = 6 .. 但它没有,它只是改变到1
我做错了什么? 谢谢
你也可以这样做:
mysql_query(" UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."' ");
你可以做到这一点,而不必查询实际的点数,所以在脚本执行过程中会节省一些时间和资源。
mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'");
否则,你做错了什么是你作为一个string( points='5'+1
)传递旧点的数量,你不能将一个数字添加到一个string。 ;)
希望在第一篇文章中我不会偏离主题,但是我想扩大一点整数到string,因为有些答复似乎有错误。
由于该查询中的expression式使用算术运算符(加号+),因此MySQL会将expression式中的任何string转换为数字。
为了演示,以下将产生结果6:
SELECT ' 05.05 '+'.95';
MySQL中的string连接需要CONCAT()函数,因此这里没有歧义,MySQL将string转换为浮点数并将它们相加。
我实际上认为最初的查询不起作用的原因很可能是因为$ pointsvariables实际上并没有设置为用户的当前点。 它被设置为零,或者未设置:MySQL会将空string转换为零。 为了说明,以下将返回0:
SELECT ABS('');
就像我说的,我希望我不要太离题。 我同意大安和托马斯对这个问题有最好的解决scheme。
另外,要“增加”string,更新时使用CONCAT
update dbo.test set foo=CONCAT(foo, 'bar') where 1=1
"UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."'"
谁需要更新string和数字SET @a = 0; UPDATE obj_disposition SET CODE = CONCAT('CD_', @a:=@a+1);
SET @a = 0; UPDATE obj_disposition SET CODE = CONCAT('CD_', @a:=@a+1);
删除'
周围的point
:
mysql_query("UPDATE member_profile SET points=".$points."+1 WHERE user_id = '".$userid."'");
您正在“铸造”一个整数值,以在您的原始查询string…
你为什么不让PHP做这个工作?
"UPDATE member_profile SET points= ' ". ($points+1) ." ' WHERE user_id = '".$userid."'"
您应该使用PDO来防止SQL注入风险。
你可以像这样连接到数据库:
try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=xxxx;dbname=xxxx', 'user', 'password', $pdo_options); $bdd->query('SET NAMES "utf8"'); } catch (PDOException $e) { exit('Error'); }
不需要查询数据库来获得点数。 您可以直接在更新查询中增加( points = points + 1
)。
(注意:另外,用PHP增加值并不是一个好主意,因为您需要先select数据,如果其他用户更新,则值可以更改。)
$req = $bdd->prepare('UPDATE member_profile SET points = points + 1 WHERE user_id = :user_id'); $req->execute(array( 'user_id' => $userid ));
- PDOException“找不到驱动程序”
- MySQL中的多列外键?
- 任何方式select,而不会导致在MySQLlocking?
- 我可以在MySql中使用函数作为默认值吗?
- MySQL – 实体:表“TableDetails”中的列“IsPrimaryKey”的值是DBNull
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接closures后不允许任何操作
- XAMPP for Windows中mysql客户端“.my.cnf”的位置是什么?
- 使用echo命令通过shell脚本自动执行mysql_secure_installation
- 如何获取MySQL表的创builddate?