我正在管理一家在线商店。每个产品都有自己的费用计算(1% + 0.10 欧元/1% + 0.20 欧元/1% + 0.30 欧元等)。我现在无法猜测费用是多少,因为我们遵循复杂的计算并且无法将它们直接集成到 PHP 类中。
我希望在我的后端能够添加公式并将其分配给每个产品。 示例:对于产品 A,我想创建费用计算“X/100+0.10”,其中 X 是产品价格。 如何将这种公式存储在 SQL 行中?安全吗?我如何告诉 PHP 将此行用作:
$fee = X/100 + 0.1;
谢谢!
最佳答案
因此,根据经验,您可以在数据库中存储您想要的任何内容 - 不要担心您可以在其中存储什么,您需要担心的是如何存储它 - 数据库只理解类型数据的含义,而不是该数据的含义 - 所以回答你的问题,是的,将该字符串存储在数据库中是安全的(假设你使用正确的转义方法等将内容放入数据库中)
说实话,如果不知道我们正在讨论多少种不同的计算,这是相当困难的 - 在理想的世界中,您将在数据库中为计算中的每个不同变量/指数拥有一个字段,然后进行组装这是在 PHP 端,但是考虑到您已经说过这可能很复杂 - 像这样的东西可能适用于一般情况,尽管它还有很多不足之处:
假设您像这样在数据库中存储内容
$formula = ‘X/100 + 0.1’;
insertIntoDatabase($formula);
—— some time later
$resultsOfQuery = someDatabaseMethod();
foreach($resultsOfQuery as $row)
{
$calculation = str_replace(‘X’, $row[‘price’], $row[‘formula’]);
//here $calculation now contains something like ’22.1/100 + 1’;
}
现在,在我们的 foreach 循环中 $calculation 包含类似“22.1/100 +1”的内容,需要评估 - 您可以通过多种方式执行此操作 - 这篇 SO 帖子对此进行了解释:PHP function to evaluate string like "2-1" as arithmetic 2-1=1
这只是一种方法,还有很多方法 - 摆弄一下,看看哪种方法适合您。
关于PHP/在表格行中保存数学公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35242991/