php
  • mysql
  • insert
  • 2013-09-01 4 views 0 likes 
    0

    Я использую этот код для получения данных от Json и вставки их в mysql. Однако он не вставляет никаких записей в базу данных.Вставка данных в mysql ранее определенные переменные

    <?php 
        include("db.php"); 
        $currsiteurl = 'http://graph.facebook.com/1597233119'; 
        $graph = json_decode(file_get_contents($currsiteurl)); 
        $id = $graph->id; 
        echo "id  : ".$id; 
        echo "<br>"; 
        $username = $graph->username; 
         echo "username : ".$username; 
         echo "<br>"; 
        $gender = $graph->gender; 
         echo "gender : ".$gender; 
         echo "<br>"; 
         $locale = $graph->locale; 
         echo "locale : ".$locale; 
    
    
         mysql_query("INSERT INTO users_data (id, username, gender, locale) 
         VALUES ('.$id', '.$username', '.$gender', '.$locale')");  
          ?> 
    

    Может ли кто-нибудь показать мне, где ошибка?

    ответ

    0
    mysql_query("INSERT INTO users_data (id, username, gender, locale) 
        VALUES ('.$id', '.$username', '.$gender', '.$locale')"); 
    

    Вы создаете единственную строку (со встроенными переменными), поэтому точки «.» не требуются.

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

    +0

    Расширение mysql устарело, вместо этого используйте PDO или mysqli. –

    +0

    , даже когда я удаляю точки, они ничего не вставляют –

    +1

    Являются ли переменные эхо-значениями, которые вы ожидаете? Создайте строковую переменную для SQL-оператора и эхо-сигнал (или 'print_r()') и попробуйте запустить ее из phpMyAdmin (или аналогичного). –

    0

    В дополнении к тому, что утверждает Энди G:

    1. Вы должны использовать подготовленные заявления, чтобы убедиться, что данные, которые вы получаете правильно спаслись чтобы избежать SQL-инъекций: http://php.net/manual/en/pdo.prepared-statements.php

    2. , чтобы помочь отладки запросов, добавьте echo mysql_error() после mysql_query заявления для печати ошибку (или использовать один из новых новомодных методов, указанных в предупреждении здесь: http://us1.php.net/manual/en/function.mysql-error.php)

    +0

    Хорошо point и prectice, но я не уверен, что график facebook будет часто запускать атаки SQL-инъекций! –

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