1

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'";

但它根本不起作用。是因为我试图在一个字符串中执行太多功能吗?还是因为数学方程式是错误的,因为我不知道怎么写?

4

2 回答 2

2

SQL 支持算术运算。因此,您可以执行以下操作:

 "UPDATE avis_credits SET credits=credits + $qty_credit";
于 2013-08-28T09:16:56.890 回答
2

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

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

所以 credits 变成了 的值$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));
于 2013-08-28T09:17:47.297 回答