0

テーブル構造があり、挿入クエリの前に moviedb.org から movie_id を取得しようとしています。

ここに画像の説明を入力

ここにコードの一部があります

      $movie_name = $arrTitle[0];

    $apiKey = '30f44b6ef9472d414e50d2acaa058b60';
    $url = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/30f44b6ef9472d414e50d2acaa058b60/"$movie_name"");
    $xml = simplexml_load_file($url);
    $movies = $xml->movies->movie;
    $images = $xml->xpath("//image");
   foreach ($movies as $movie){
        $arrMovie_id = $movie->id;
    }
    foreach ($images as $image){
    $attr = $image->attributes();
     if($image['size'] == "thumb" && $image['type']=="poster"){       
        $images= $image['url'];
        }
    }
    $arrStr = explode(':',$htmlShowTime);
    $release = substr($arrStr[3],0,strlen($arrStr[3])-8);
    $director = substr($arrStr[5],0,strlen($arrStr[5])-11); 

    $sql_movie = "insert into jos_movie(movie_name,language,cast,movie_release,director,rating,rating_count,movie_ids,image)values('$movie_name','null','$cast','$release','$director',250,230,'$arrMovie_id','$images')";
    //echo $sql.'<br>';
   // echo $sql_movie;

    mysql_query($sql_movie);

コードを見ると、movie_id を取得しようとしています$urlが、画像フィールドで 0 を取得し、場合によっては「配列」を取得しています

たとえば、最初の映画「Go Goa Gone」の場合

URLはhttp://api.themoviedb.org/2.1/Movie.search/en/xml/30f44b6ef9472d414e50d2acaa058b60/%22Go%20Goa%20Gone%22

IDと画像を取得する必要があります

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
  <opensearch:Query searchTerms="&quot;Go+Goa+Gone&quot;"/>
  <opensearch:totalResults>1</opensearch:totalResults>
  <movies>
    <movie>
      <score>42.34326</score>
      <popularity>3</popularity>
      <translated>true</translated>
      <adult>false</adult>
      <language>en</language>
      <original_name>Go Goa Gone</original_name>
      <name>Go Goa Gone</name>
      <alternative_name></alternative_name>
      <type>movie</type>
      <id>191562</id>
      <imdb_id>tt2436516</imdb_id>
      <url>http://www.themoviedb.org/movie/191562</url>
      <votes>0</votes>
      <rating>0.0</rating>
      <certification>NR</certification>
      <overview>A rave party off the coast of Goa, goes horrifyingly and hilariously wrong when the island is overrun with zombies.</overview>
      <released>2013-05-10</released>
      <images>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w92/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="thumb" width="92" height="133" id="51880dd7760ee3144531d0b9"/>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w154/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="w154" width="154" height="222" id="51880dd7760ee3144531d0b9"/>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="cover" width="185" height="267" id="51880dd7760ee3144531d0b9"/>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w342/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="w342" width="342" height="493" id="51880dd7760ee3144531d0b9"/>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w500/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="mid" width="500" height="721" id="51880dd7760ee3144531d0b9"/>
        <image type="poster" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/original/cSDvyWmh7rSD7WtSoXScVw3GDnD.jpg" size="original" width="810" height="1168" id="51880dd7760ee3144531d0b9"/>
        <image type="backdrop" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w300/mjxJT7skpStIGyp1bAe7XCsTVEN.jpg" size="thumb" width="300" height="169" id="51880e1f760ee3059e36a012"/>
        <image type="backdrop" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w780/mjxJT7skpStIGyp1bAe7XCsTVEN.jpg" size="poster" width="780" height="439" id="51880e1f760ee3059e36a012"/>
        <image type="backdrop" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w1280/mjxJT7skpStIGyp1bAe7XCsTVEN.jpg" size="w1280" width="1280" height="720" id="51880e1f760ee3059e36a012"/>
        <image type="backdrop" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/original/mjxJT7skpStIGyp1bAe7XCsTVEN.jpg" size="original" width="1280" height="720" id="51880e1f760ee3059e36a012"/>
      </images>
      <version>1</version>
      <last_modified_at>2013-05-06 20:14:04 UTC</last_modified_at>
    </movie>
  </movies>
</OpenSearchDescription>

これが var_dump です$movie_name

string(12) "Go Goa Gone "
string(6) "Gippi "
string(19) "Shootout at Wadala "
string(23) "Lucky Di Unlucky Story "
string(11) "Aashiqui 2 "

この不規則性のコードのどこが間違っていますか?

4

1 に答える 1

1

複数の画像が見つかった for ループでこのように実行する必要があります。XML ファイルで複数の映画リストのリストを作成し、以下のコードをテストしました。

//$movies = $xml->movies;
    $movies = $xml->xpath("//movies/descendant::movie");
    //echo "<pre>";print_r($movies);die;
    //$images = $xml->xpath("//image");
    foreach ($movies as $movie){
        echo $arrMovie_id = $movie->id;
        $images = $movie->xpath("//image");
        //echo "<pre>";print_r($images);
            $imageUrl = array();
        foreach ($images as $image){
            if($image['size'] == "thumb" && $image['type']=="poster"){       
                $imageUrl[] = $image['url'];
            }
        }

        //then you need to implode $imageUrl array to string so that you can add multiple found image urls
        $imageUrl = implode(",", $imageUrl);

        $arrStr = explode(':',$htmlShowTime);
        $release = substr($arrStr[3],0,strlen($arrStr[3])-8);
        $director = substr($arrStr[5],0,strlen($arrStr[5])-11); 

        $sql_movie = "insert into jos_movie(movie_name,language,cast,movie_release,director,rating,rating_count,movie_ids,image)values('$movie_name','null','$cast','$release','$director',250,230,'$arrMovie_id','$imageUrl')";
        //echo $sql.'<br>';
        echo $sql_movie;

        //mysql_query($sql_movie);
        echo "<hr/>";
    }

編集: imageUrl は、$images の代わりに SQL クエリのコード $imageUrl で配列として作成されます (XML の配列であるため、使用されません)。

上記のコードから、テーブルに複数のムービーを挿入できます。下の画像を参照してください 複数の映画リスト

于 2013-05-12T03:33:41.330 に答える