使用PHP在数据库中实现值检查的最佳方法

使用PHP在数据库中实现值检查的最佳方法,php,mysql,database,Php,Mysql,Database,我对PHP非常陌生。我正在为我正在创建的iPhone应用程序构建一个配套的Web服务 我创建了下面的DB表,其中充满了触发器 基本概念是,对于给定的货币,当价格达到触发价格时,我将发送推送通知 在生成推送通知之前,我需要一种优雅的方法来根据当前市场价格验证此表中的每个条目 在最初的想法中,我想选择每个触发价格和每种货币,并与另一个变量中的当前市场价格进行比较 有谁能告诉我实现我的目标的最优雅的方式吗?(将整个表与各种货币的市场价格进行比较) 另外,如果您有任何php代码片段,那将非常棒 谢谢,

我对PHP非常陌生。我正在为我正在创建的iPhone应用程序构建一个配套的Web服务

我创建了下面的DB表,其中充满了触发器

基本概念是,对于给定的货币,当价格达到触发价格时,我将发送推送通知

在生成推送通知之前,我需要一种优雅的方法来根据当前市场价格验证此表中的每个条目

在最初的想法中,我想选择每个触发价格和每种货币,并与另一个变量中的当前市场价格进行比较

有谁能告诉我实现我的目标的最优雅的方式吗?(将整个表与各种货币的市场价格进行比较)

另外,如果您有任何php代码片段,那将非常棒

谢谢,
John

如果应用程序有一个用户登录,那么您只需要检查该用户的行,这并不糟糕

但是,我将以不同的方式实现数据库,有一个单独的
货币
表,如下所示:

id             SERIAL
currency_name  VARCHAR(10)
market_price   FLOAT
然后更改主表,使
target\u price
也是一个
FLOAT
(如果您存储的是美分或等值的数字,而不是美元值,则可以使用int,因此103而不是1.03)。最后,将currency更改为引用另一个表的int

currency_id    INTEGER
然后,您可能希望向表中添加外键约束:

FOREIGN KEY (currency_id) 
    REFERENCES currencies(id)
现在,您可以在市场价格变化时更新货币表,然后使用SQL获取需要触发的行列表:

SELECT u.id 
    FROM users u, currencies c
    WHERE u.currency_id = c.id 
      AND u.trigger_price <= c.market_price
;
如果您相信数据库只包含货币数组中的内容,则可以跳过健全性检查。如果只想检查某些货币,则只能选择与已更新的货币匹配的行

我还假设你的条件是触发价格低于当前价格,你可能需要根据你想要做的做不同的逻辑

while ($row = $result->fetch_assoc()) {
    if (isset($prices[$row->currency) // Sanity check on the prices array
        && ($row->trigger_price <= $prices[$row->currency])) 
    {
       // Matching row, do something with it ... 
    }
}