2016-12-02 2 views
0

Я пытаюсь получить некоторые данные от The Movie Database, используя library, чтобы вставлять результаты в базу данных локально с помощью Xampp.Функция не записывается в базу данных?

Вот что у меня есть, я знаю, что он грязный (глобальные функции в таких функциях и т. Д.), Но я выполняю это локально - мне просто нужно записать данные в БД, если есть какие-либо действительные данные, или перезапустить если нет.

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, но не написал две другие действительные записи в моей базе данных.

+1

Это может быть проблема с цитированием. Сохраните головную боль и переключитесь на [подготовленные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [bind_param] (http://php.net/manual/ о/MySQLi-stmt.bind-param.php). Кроме того, я не вижу, где вы действительно вставляете sql в базу данных. – aynber

+0

Вы не вставляете данные в базу данных, у вас просто есть запрос, готовый сделать это, выполнение этого запроса не выполняется. – coderodour

ответ

1

Вы не вставляете данные в базу данных, у вас есть запрос, подготовленный для этого, выполнение этого запроса не выполняется.

Вам необходимо $conn->query($sql) после вашего $sql = "query".

+0

Приветствия за это, не использовали PHP в течение долгого времени – PublicDisplayName

+0

рад, что я мог бы помочь, продвигаясь вперед и убедившись, что вы адаптировались к последним практикам в php (поскольку более старые из них считаются небезопасными и/или быстро становятся обесцененными), Я бы также рекомендовал вам изучить и прибегнуть к подготовленному заявлению для всех ваших потребностей, как было предложено aynber в комментарии выше со ссылкой на ресурс. – coderodour

+0

Здравствуйте, спасибо за вашу заботу. Я бы использовал подготовленные инструкции для производственного кода, но это выполняется в виртуальной машине с использованием Xampp для тестового теста - я не слишком обеспокоен, если что-то происходит с данными, так как это новая БД. Но я согласен и ценю беспокойство! – PublicDisplayName

0

Global $ mid. Также должен быть в верхнем scrpit.

Смежные вопросы