2016-12-02 9 views
0

The Movie Databaseからデータを取得しようとしましたが、libraryを使用して、結果をXamppを使用してデータベースにローカルに挿入しようとしています。機能はデータベースに書き込んでいませんか?

これまでのところ私はそれが汚れていることを知っていますが(関数などのグローバル変数)、ローカルで実行しています - 有効なデータがあればDBにデータを書き込むか、もしそうでなければ機能する。

require_once '../vendor/autoload.php'; 

$token = new \Tmdb\ApiToken('My API Key - removed'); 
$client = new \Tmdb\Client($token); 
$mid = 1; 
$conn = new mysqli('localhost', 'root', '', 'test'); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

moviedetails(); 

function moviedetails() { 

    global $token; 
    global $client; 
    global $mid; 
    global $conn; 

    $repository = new \Tmdb\Repository\MovieRepository($client); 
    $movie = $client->getMoviesApi()->getMovie($mid); 

    var_dump($movie); 

     $votecount = $movie['vote_count']; 
     $voteaverage = $movie['vote_average']; 
     $image = $movie['poster_path']; 
     $releasedate = $movie['release_date']; 
     $id = $movie['id']; 
     $title = $movie['title']; 
     $description = $movie['overview']; 

     $sql = "INSERT INTO movie (votes, vote_average, poster, release_date, dbid, title, description) 
     VALUES ('$votecount', '$voteaverage', '$image', '$releasedate', '$id', '$title', '$description')"; 

     echo $mid; 

     $mid++; 
     moviedetails(); 

} 

$mid = 3でスクリプトが失敗しますが、他の2つの有効なエントリがデータベースに書き込まれていません。

+1

引用の問題である可能性があります。自分自身を頭痛から守って、[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[bind_param](http://php.net/manual/ en/mysqli-stmt.bind-param.php)。また、実際にSQLをデータベースに挿入する場所はわかりません。 – aynber

+0

あなたはデータベースにactaullyを挿入していません。あなたはそれを行う準備ができています。そのクエリは実行されていません。 – coderodour

答えて

1

あなたはデータベースにアクタを挿入しておらず、実行する準備ができているだけで、そのクエリは実行されません。

$sql = "query"の後に$conn->query($sql)が必要です。

+0

これを歓迎します。かなりの間PHPを使用していませんでした。 – PublicDisplayName

+0

私は、前進して、PHPの最新のプラクティスに適応していることを確認できたことをうれしく思っています。(古いものは安全でないことが判明したり、 )、リソースへのリンクを持つ上記のコメントの中でaynberによって提案されているように、私はあなたが必要とするすべてのものについて準備された声明を学び、それに頼ることをお勧めします。 – coderodour

+0

こんにちは、ありがとうございます。私は準備済みのステートメントをプロダクションコードに使用しますが、これはサンプルテスト用のXamppを使用してVM内で実行されています。新しいDBのようにデータに何か問題が発生してもあまり気にしません。しかし、私は同意し、懸念を感謝します! – PublicDisplayName

0

グローバル$ mid。また、トップscrpitにする必要があります。

関連する問題