0

私のmysqlデータベースには、アイテムIDを含む行がいくつかあります。私がやりたいことは、以下の非常に大きな URL の XML ドキュメント内に含まれているものについて、「placidRate」列のそれぞれを更新することです。たとえば、typeID 1230 の場合、データベースで 1230 のレートを見つけて、それを のレートと一致させる必要があり$type->sell->minます。それが最終目標です。今私が探しているのは、古いレート (db) と新しいレート (xml) を並べてエコーすることだけです。

while($row = mysql_fetch_assoc($result)){
    $oldTypeID = $row['typeID'];

    $urlPlacid = 'http://api.eve-central.com/api/marketstat?typeid=1230&typeid=17470&typeid=17471&typeid=1228&typeid=17463&typeid=17464&typeid=1224&typeid=17459&typeid=18&typeid=17455&typeid=17456&typeid=1227&typeid=17867&typeid=17868&typeid=20&typeid=17452&typeid=17453&typeid=1226&typeid=17448&typeid=17449&typeid=1231&typeid=17444&typeid=17445&typeid=21&typeid=17440&typeid=17441&typeid=1229&typeid=17865&typeid=17866&typeid=1232&typeid=17436&typeid=17437&typeid=19&typeid=17466&typeid=17467&typeid=1225&typeid=17432&typeid=17433&typeid=1223&typeid=17428&typeid=17429&typeid=22&typeid=17425&typeid=17426&typeid=11396&typeid=17869&typeid=17870&typeid=34&typeid=35&typeid=36&typeid=37&typeid=38&typeid=40&typeid=39&typeid=11399&regionlimit=10000048';
    $xmlPlacid = simplexml_load_file($urlPlacid);
    foreach($xmlPlacid->marketstat->type as $type){
         $newRate = $type->sell->min;
         if($type[id] = $oldTypeID){
               echo "old placid rate: ".$row['placidRate']." || new placid rate: ".$newRate;
         }
    else{}

このコードの問題は、それが返されることです

古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 12.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 25.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 17.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 25.21古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 22.01古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 30.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 55.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 80.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 85.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 94.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 90.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 120.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 290.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || ニュー プラシッド レート: 0.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 1087.06古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || 新しい穏やかなレート: 0. 00old 穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 00old 穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 00old 穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 0.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 4.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00 14.5 || || 新しい穏やかなレート: 10.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 40.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 143.00オールド プラシッド レート: 14.5 || || 新しい穏やかなレート: 819.00古い穏やかなレート: 14.5 || || 新しい穏やかなレート: 2599.00古い穏やかなレート: 14.5 || || ニュー プラシッド レート: 770.00オールド プラシッド レート: 14.5 || 新しい穏やかなレート: 0.00

そして、その理由は完全にはわかりません...

SQL テーブルの更新に一歩近づきました。もう一度編集

$market = new eveCentral();
while($row = mysql_fetch_assoc($result2)){
    $oldTypeID = $row['typeID'];
    $oldRate = $row['placidRate'];
    $newPlacidRate = $market->placidMin($oldTypeID);
    $newForgeRate = $market->forgeMin($oldTypeID);
    $newUniverseRate = $market->universeMin($oldTypeID);

    $updateQuery = "UPDATE itemRates SET placidRate = $newPlacidRate, forgeRate = $newForgeRate, universeRate = $newUniverseRate WHERE typeID = $oldTypeID";
4

3 に答える 3

1

IDでノードを探している場合は、xpathを使用してください
$node = $xmlPlacid->xpath("//*[@id='foo']");

于 2013-01-02T15:55:46.607 に答える
1

==equal to 演算子を逃しましたIF

if($type['id'] == $oldTypeID){
...
}
于 2013-01-02T15:57:39.093 に答える
1

比較における間違った演算子の問題if(@GBD が概説したように) とは別に、ここにはいくつかの問題があります。

  1. データベースの結果行ごとに eve-central.com から XML を取得しています 。ただし、XML は変更されません。データベースクエリのに移動します。while
  2. @Alex が回答したように、xpath を使用して、探している ID のアイテムを見つけます。

上からの眺め:

$marketstat = new EveCentralMarketstat();

while ($row = mysql_fetch_assoc($result)) {
    $oldTypeID = $row['typeID'];
    $oldRate   = $row['placidRate'];
    $newRate   = $marketstat->getSellMinByType($oldTypeID);
    if (FALSE !== $newRate) {
        echo "old placid rate: " . $oldRate . " || new placid rate: " . $newRate;
    }
}

EveCentralMarketstatクラスの定義:

より多くのデータアクセスに必要な関数を追加します。また、必要な情報に応じてコンストラクターを改善できます。改善方法を簡単に説明します。

/**
 * Wrapper Class for Even Central API Market Statistics
 */
class EveCentralMarketstat
{
    /**
     * @var SimpleXMLElement
     */
    private $xml;

    public function __construct() {

        $urlPlacid = 'http://api.eve-central.com/api/marketstat?typeid=1230&typeid=17470&typeid=17471&typeid=1228&typeid=17463&typeid=17464&typeid=1224&typeid=17459&typeid=18&typeid=17455&typeid=17456&typeid=1227&typeid=17867&typeid=17868&typeid=20&typeid=17452&typeid=17453&typeid=1226&typeid=17448&typeid=17449&typeid=1231&typeid=17444&typeid=17445&typeid=21&typeid=17440&typeid=17441&typeid=1229&typeid=17865&typeid=17866&typeid=1232&typeid=17436&typeid=17437&typeid=19&typeid=17466&typeid=17467&typeid=1225&typeid=17432&typeid=17433&typeid=1223&typeid=17428&typeid=17429&typeid=22&typeid=17425&typeid=17426&typeid=11396&typeid=17869&typeid=17870&typeid=34&typeid=35&typeid=36&typeid=37&typeid=38&typeid=40&typeid=39&typeid=11399&regionlimit=10000048';
        $this->xml = simplexml_load_file($urlPlacid);
    }

    /**
     * @param $typeID
     * @return bool|string String value if $typeID is found, FALSE on error
     */
    public function getSellMinByType($typeID) {

        $result = $this->xml->xpath("/*/marketstat/type[@id = '$typeID']/sell/min");
        if (!$result) {
            return FALSE;
        }
        return (string)$result[0];
    }
}
于 2013-01-02T17:21:38.347 に答える