php - 存储公式的 MySQL/PHP

标签 php mysql eval

困境:

我有一些选项需要存储定价数据。

每个选项都可以有不同的公式来确定其成本。

例如,一个选项的总成本将为成本 * 平方英尺,而另一个选项将为成本 * 周长英尺,而另一个选项仍然只是固定成本。

我公司拥有的几个网站正在从数据库中提取这些选项。

这些网站中的每一个都需要能够以完全相同的方式计算期权定价。

我们目前在每个站点上都有 PHP 代码从数据库中提取数据,然后确定如何计算它。

此方法的问题是我们有时会更改价格的计算方式,当发生这种情况时,我们必须编辑定价模块存储库,然后将其更新到托管这些站点之一的每台服务器。

我正在寻找更好的解决方案。

我正在尝试将公式存储在数据库中的选项记录中,然后每个站点只需要调用该选项,将数据应用于存储在那里的公式,然后运行该公式。

现在,这可以用 eval() 来完成,但我真的不想那样做。

Eval 示例让您更清楚地了解我正在尝试做什么:

$product->width = 3;
$product->length = 4;
$formula = $option->cost_formula; // $product->width * $product->length * $option->cost
eval($formula);

还有其他解决方案吗?

最佳答案

使用functions .

伪代码:

CREATE FUNCTION calculation1 (@cost decimal(6,2), @feet int)
RETURNS decimal(7,2)
AS
BEGIN
    --Other formula calculations
    RETURN @cost * @feet
END

然后您将从查询中调用该函数:SELECT calculation1('1.50', 15)...

通过这种方式,您可以更新对函数所做的任何更改,使用该函数的查询将产生相同的结果。

关于php - 存储公式的 MySQL/PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220580/

相关文章:

php - 按单维数组对多维数组进行排序

PHP : Curl https xml result returns blank

javascript - 包括带有 html 和 node.js 的 js 文件

Javascript Eval 代码问题

javascript - 创建一个简单的密码登录,无需硬编码密码 [PHP、Javascript、MySQL]

php - MySQL - 如何连接加载数据语句?

mysql - 如何通过比较两个表中的列来填充外键

java - jhipster 和 liquibase 超时

javascript - 我正在制作一个网站,任何人都可以将图片上传到我的网站

Python 评估 : What's wrong with this code?