PHP和SQL数学

时间:2013-08-28 09:14:50

标签: php sql

这部分PHP和SQL对我来说是全新的,我需要使用数学来更新表。

我目前只有一张表avis_credits,只在这张表中有一行

当用户从qty_credits使用系统时,该表会扣除积分,但我希望能够为其帐户添加额外的积分,例如:

客户目前有10个学分,他购买了100个学分,所以系统必须拿到当前的学分并加上100学分,给我110个学分。我正在做这个当前手动添加我的一面,并用这个表达更新表。

 "UPDATE avis_credits SET credits='$qty_credit'";

我想要的是系统查找当前的积分并将新积分添加到该行。

我试过这个

 "UPDATE avis_credits SET credits='<?php echo qty_credit?> + $qty_credit'";

但它根本不起作用。是因为我试图在一个字符串中做太多功能吗?或者是因为数学方程式错误,因为我不知道如何写它?

2 个答案:

答案 0 :(得分:2)

SQL支持算术运算。 所以你可以做到以下几点:

 "UPDATE avis_credits SET credits=credits + $qty_credit";

答案 1 :(得分:2)

在您的第一个查询中,您没有进行任何数学运算,只是将其更改为变量的值:

"UPDATE avis_credits SET credits='$qty_credit'";

因此,学分成为$qty_credit的价值。

在你的第二个查询<?php echo qty_credit?>这是错误的,你试图在已经打开的那个上打开另一个php标签而你没有在变量上使用$然后你尝试对变量求和,这样就会给你一个错误。

"UPDATE avis_credits SET credits='<?php echo qty_credit?> + $qty_credit'";

这将清理您的输入,并通过添加变量$qty_credit的值来总结点数的值:

$sql = sprintf("UPDATE avis_credits SET credits = credits + '%s'", 
               mysql_real_escape_string($qty_credit));

作为附注,您可能希望指定要存入额外信用的帐户的ID,否则上述规则将增加所有行的信用。

$sql = sprintf("UPDATE avis_credits SET credits = credits + '%s' WHERE id = '%s'", 
               mysql_real_escape_string($qty_credit),
               mysql_real_escape_string($id));