fql_query возвращает «массив» вместо имени - PullRequest
1 голос
/ 14 ноября 2010

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

Код:

require_once 'facebook.php';

$ appapikey = 'xxxx';

$ appsecret = 'xxxx';

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

$ user_id = $ facebook-> require_login ();

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 26 ноября 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);

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

echo "Name : " . $name[0]['name'];
0 голосов
/ 23 февраля 2011

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

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

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

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

или

    echo "Name : ".$name[0][name];
0 голосов
/ 15 ноября 2010

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

...