Почему $ friend не раскрывается в запросе FQL JSON? - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь настроить мультизапрос в FQL в PHP, с переменной.Но я не могу заставить его работать правильно

  $fql = '{
        "uid"   : "SELECT uid FROM user WHERE username = \"$friend\"",
        "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",
        "photo": "SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)"
    }';

В основном это попытка получить фотографии с обложки альбома ваших друзей.

Если я введу имя пользователя друга прямо вместо $ friend, я получаю все результаты, но не с приведенным выше кодом, где $ friend динамически установлен.

Что пошло не так !! ??Спасибо

Ответы [ 4 ]

2 голосов
/ 10 марта 2012

Строки, использующие одинарные кавычки, не оцениваются PHP. В этом случае вы должны объединить их, используя оператор точки:

$fql = '{
        "uid"   : "SELECT uid FROM user WHERE username = \"' . $friend . '\"",
        "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",
        "photo": "SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)"
    }';

Вы должны взглянуть на "Библию PHP" .

1 голос
/ 10 марта 2012

В PHP переменные внутри строк в двойных кавычках будут оцениваться, в то время как переменные внутри строк в одинарных кавычках не будут.

Лучшее решение - перевернуть кавычки, чтобы ваша строка выглядела следующим образом:

$fql = "{
    'uid'   : 'SELECT uid FROM user WHERE username = '$friend',
    'album': 'SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)',
    'photo': 'SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)'
}";

Это приведет к тому, что $friend будет оценено как значение вашей переменной.

0 голосов
/ 10 марта 2012

В SQL обычно все varchar заключаются в одинарные кавычки вместо двойных Вы пробовали это?

"SELECT uid FROM user WHERE username = '" . $friend . "'",
0 голосов
/ 10 марта 2012
$text = "85";
print "The number is: ".$text.".";

это выдаст:

The number is: 85.
...