2

xpath を使用してデータをスクレイピングし、SQL に挿入しようとしています。

Echo は正常に動作していますが、SQL に挿入すると、最初の行しか取得できません。

例:

    <?php 
    $res=mysql_query("SELECT table.title, table.link FROM table WHERE table.link LIKE 'http://www.%' AND streams.title = ''");
    while($row=mysql_fetch_array($res))
    {
      $html = new DOMDocument();
      @$html->loadHtmlFile($row["link"]);
      $xpath = new DOMXPath($html);

      foreach ($xpath->query("//table[@style='margin-left: 5px;']//td[@width='150']//a") as $files)
      {
        $html = new DOMDocument();
        @$html->loadHtmlFile($files->getAttribute('href'));
        $xpath = new DOMXPath($html);

        $hl = $xpath->query("//div[@style='width:742px']/a[preceding-sibling::div[@id='help1']]/@href")->item(0)->nodeValue;
        $link=serialize(array('link' => $hl));
        $link=sqlesc($link); 
        echo $link; // all lines gets printed, thats okay?
        mysql_query("UPDATE streams SET streams.hl=$link") or die(mysql_error()); // Only first line gets inserted, why?
      }

    }  
    ?>
4

1 に答える 1

0

すべての行を更新しています。前回の更新ですべての行が更新されたため、同じデータを含むすべての行を取得しています。既存の行を更新しますか、それとも単に新しい行を挿入しますか?

挿入したい場合はこれを試してください

INSERT INTO streams (hl) VALUES ($link)

テーブルにオプション以外の列が他にある場合は、それらの値も挿入します

于 2012-11-23T13:27:57.047 に答える