0

さて、これらの 2 つの関数は、何らかの理由で正しく動作することを拒否し、その理由がわかりません。アクティブなデータベースの外で使用すると問題なく動作します (私はテスト済みで、現在テスト中です)。たとえば、価格が 4 から 20 ドルに上がる必要がある場合、価格はゼロになり、次に更新されると行の次の数値になります。

private function updatePrice($iid, $price, $purchased)
{
    if($price >= 0)
    {
        $price = abs($price);
    }
    else
    {
        $price = $this->getItemStats($iid);
        $price = abs($price['base']);
    }
        $sql = "UPDATE store SET item_price = :price, available = available-:purchased  WHERE iid = :iid";
        $que = $this->db->prepare($sql);
        $que->bindParam('price', $price);
        $que->bindParam('iid', $iid);
        $que->bindParam('purchased', $purchased);
        try{$que->execute(); if($que) { return true; } else { echo "FUCK"; exit; } }catch(PDOException $e){echo $e->getMessage(); exit;}
}
function getSupplyDemand($purchased, $iid)
{
    $sql = "SELECT available, number, item_base_price, iid FROM store WHERE iid = :iid";
    $que = $this->db->prepare($sql);
    $que->bindParam('iid', $iid);
    try{ $que->execute();
        if($que)
        {
            while($row = $que->fetch())
            {
                $Quantity =$row[0];
                $Supply = $row[1];
                $price = $row[2];
                $iid = $row[3];
                $price = abs(($price * $purchased)*($Quantity - $Supply)/.25);
                    if($this->updatePrice($iid, $price, $purchased))
                    {
                        return true;
                    }
                    else
                    {
                        echo "Somethign went wrong";
                        exit;
                    }
            }
        }
    }catch(PDOException $e){}   
}
4

1 に答える 1

0

問題を解決しました。繰り返しますが、私が考えすぎたのは単純なことでした。関数を適切な順序で呼び出していなかったため、 Number と Available は同じであり、互いに削除されたため、価格全体がキャンセルされました。

于 2013-08-09T18:39:48.420 に答える