fql_query возвращает массив вместо имени

Я пытаюсь создать простое приложение fb, которое извлекает имя пользователя с помощью fql_query.

Код :

require_once 'facebook.php';

$appapikey = 'хххх';

$appsecret = 'хххх';

$facebook = новый Facebook($appapikey, $appsecret);

$user_id = $facebook->require_login();

$q = "ВЫБЕРИТЕ имя ОТ пользователя, ГДЕ uid='$user_id'";

$name = $facebook->api_client->fql_query($q);

echo "Имя: $name[0][name]";

Вывод: Имя: Массив [имя]

Можете ли вы сказать мне, что здесь происходит не так? Спасибо!


person user379151    schedule 14.11.2010    source источник


Ответы (3)


Ошибка в этой строке:

echo "Name : $name[0][name]";

вы заключаете $name[0][name] в кавычки, это должно быть

echo "Name : {$name[0][name]}";

or

    echo "Name : ".$name[0][name];
person Hafiz    schedule 23.02.2011

Запрос FQL всегда возвращает массив, даже если в результате есть только один элемент. Думайте о результате как о строках в обычном SQL-запросе.

person Nathan Totten    schedule 14.11.2010

Каждый раз, когда я использую массивы или вызовы базы данных/API в PHP, я печатаю_r($array_name), чтобы увидеть, что было возвращено. Итак, это:

$name = $facebook->api_client->fql_query("SELECT name FROM user WHERE uid=$user_id");
print_r($name);

Должно вернуть это:

Array
(
    [0] => Array
    (
        [name] => First Last
    )
)

Другое дело, я никогда не ставил галочки вокруг значений/переменных в FQL.

$q = "SELECT name FROM user WHERE uid=$user_id";
$name = $facebook->api_client->fql_query($q);

Но когда вы печатаете значение, вы должны заключать в одинарные кавычки ссылку на именованный индекс (в данном случае «имя»), и вам не следует заключать все это в двойные кавычки:

echo "Name : " . $name[0]['name'];
person ow3n    schedule 26.11.2010